如何为在R中使用assign()创建的矩阵赋值 m

如何为在R中使用assign()创建的矩阵赋值 m,r,assign,R,Assign,我有点不好意思发布这篇文章,但是有办法做到这一点。这感觉非常错误,因为R方法是建立一个矩阵列表,然后通过传递一个函数来使用lappy对其进行转换来对其进行操作 m <- "mData" assign(m, matrix(data = NA, nrow = 4, ncol = 5)) assign.by.char如果确实需要使用assign(),可以使用replace() m或者您可以直接使用assign(@bondedust解决方案的变体) assign(m`[为什么不跳过中间人,直接转

我有点不好意思发布这篇文章,但是有办法做到这一点。这感觉非常错误,因为R方法是建立一个矩阵列表,然后通过传递一个函数来使用lappy对其进行转换来对其进行操作

m <- "mData"
assign(m, matrix(data = NA, nrow = 4, ncol = 5))

assign.by.char如果确实需要使用
assign()
,可以使用
replace()


m或者您可以直接使用
assign
(@bondedust解决方案的变体)


assign(m`[为什么不跳过中间人,直接转到
m?还有一个循环围绕着这些行。因此,m随着每个循环而变化。每个循环中要分配的值也不同。结果将是许多矩阵具有不同的名称。这确实是走错了路,但您可以将名称收集到vector和cr中使用
mget
创建一个矩阵列表。然后使用
lappy
对它们应用适当的函数。真是我感到惭愧。你的代码运行得很好。谢谢!但我对“eval.parent()”和“[
[
assign.by.char <- function(x,  ...) {
   eval.parent(assign(x,  do.call(`[<-`, list(get(x) , ...)))) }

assign.by.char(m, 1,2,35)
     [,1] [,2] [,3] [,4] [,5]
[1,]   NA   35   NA   NA   NA
[2,]   NA   NA   NA   NA   NA
[3,]   NA   NA   NA   NA   NA
[4,]   NA   NA   NA   NA   NA
m <- matrix(, 3, 3)
assign("m", replace(m, cbind(1, 2), 35))
m
#      [,1] [,2] [,3]
# [1,]   NA   35   NA
# [2,]   NA   NA   NA
# [3,]   NA   NA   NA
 assign(m, `[<-`(get(m), cbind(1,2), 35))
 mData
 #     [,1] [,2] [,3]
 #[1,]   NA   35   NA
 #[2,]   NA   NA   NA
 #[3,]   NA   NA   NA
assign.by.char <- function(x, ...){
  eval.parent(assign(x, `[<-`(get(x), ...)))}
mData <- matrix(, 3, 3)
 m <- 'mData'