0

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

我希望我能够清楚地指出我的问题。在此先感谢,埃里克

4

2 回答 2

1

使用get

get(MatrixNameList[1])  # retrieves matrix called "Matrix1"

但是,最好将所有这些矩阵收集到一个对象中。这样的事情应该让你开始。

Matrices <- lapply(MatrixNameList, get)
于 2013-06-12T13:49:19.570 回答
1

您可以分配如下值:

MatrixList <- list(Matrix1, Matrix2)
names(MatrixList) <- MatrixNameList

MatrixList[[1]][2,3] <- 4
# OR:
MatrixList$Matrix1[2,3] <- 4
于 2013-06-12T13:49:36.647 回答