如何将一个值分配给特定的矩阵条目,其中必须使用变量名称调用矩阵

时间:2013-06-12 13:44:55

标签: r assign

我有以下问题:我有一个巨大的矩阵列表,这些矩阵具有共享相同维度的唯一名称。我计算了一些我现在想要分配给某个矩阵的值,例如: [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... ?
}

我希望我能清楚地指出我的问题。提前致谢, 埃里克

2 个答案:

答案 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