我有以下问题:我有一个巨大的矩阵列表,这些矩阵具有共享相同维度的唯一名称。我计算了一些我现在想要分配给某个矩阵的值,例如: [3,4]。因为我有这么多矩阵,所以我创建了一个列表,其中包含那些矩阵应具有的名称,然后我使用assign()
来创建所有这些矩阵(空)。我现在想用其变量名称调用单个矩阵,为某些矩阵条目分配不同的值。我只知道命令assign() and eval(parse())
,但没有设法让它工作。我尝试了几件事没有成功:
assign(x=MatrixNameList[i][3,4],value=z)
assign(x=MatrixNameList[i],value=z)[3,4]
eval(parse(text=MatrixNameList[i]))[3,4]<-z
assign(x=eval(parse(text=MatrixNameList[i]))[3,4] ,value=z)
所以我想知道是否有可能做我想做的事情。我的代码结构是一个简单的循环:
Matrix1 <- Matrix2 <- matrix(nrow=3,ncol=4)
MatrixNameList <- c('Matrix1', 'Matrix2')
for (i in 1:length(MatrixNameList)){
z <- calculatedValue <- 4 # different for the single matrices
assign... ?
eval(parse... ?
}
我希望我能清楚地指出我的问题。提前致谢, 埃里克
答案 0 :(得分:1)
使用get
:
get(MatrixNameList[1]) # retrieves matrix called "Matrix1"
但是,最好将所有这些矩阵收集到一个对象中。这样的事情应该让你开始。
Matrices <- lapply(MatrixNameList, get)
答案 1 :(得分:1)
您可以指定以下值:
MatrixList <- list(Matrix1, Matrix2)
names(MatrixList) <- MatrixNameList
MatrixList[[1]][2,3] <- 4
# OR:
MatrixList$Matrix1[2,3] <- 4