0

我有 12 个矩阵 pV1...pV12。我需要根据列表中的 TF2Gene 名称更改它们的名称。所以我必须重复这个过程12次。如何在循环中引用这些矩阵,以便我只需要运行一个循环而不是单独调用它们中的每一个?

colnames(pV1)<-names(TF2Gene)
colnames(pV2)<-names(TF2Gene)
colnames(pV3)<-names(TF2Gene)
colnames(pV4)<-names(TF2Gene)
colnames(pV5)<-names(TF2Gene)
colnames(pV6)<-names(TF2Gene)
colnames(pV7)<-names(TF2Gene)
colnames(pV8)<-names(TF2Gene)
colnames(pV9)<-names(TF2Gene)
colnames(pV10)<-names(TF2Gene)
colnames(pV11)<-names(TF2Gene)
colnames(pV12)<-names(TF2Gene)

另外我必须生成 24 个矩阵并且必须调用 24 次以下的命令,还有更短的方法吗?

exprN1.meth.pv <- matrix(nrow=8,ncol=44)
exprN2.meth.pv <- matrix(nrow=8,ncol=44)
exprN4.meth.pv <- matrix(nrow=8,ncol=44)
4

1 回答 1

1

把它们放在一个列表中。然后,您可以通过遍历索引或遍历列表元素本身来遍历该列表。

或者更好的是,您可以在列表中使用lapply,sapply等。

如果矩阵的结构相似,我建议使用一个数组(因此沿第三维的数组的每个“切片”都是您当前的二维矩阵之一),因为它会更快。

编辑:如何将它们放在列表中

最好的方法是首先在列表中创建它们。但如果你想拿走你所拥有的,首先生成一个包含名字的字符向量。

matNames <- paste0("pV",seq(12))

然后使用get

listOfMat <- lapply( matNames, function(mn) get(mn) ) 

然后,您可以使用以下名称命名它们:

names(listOfMat) <- matNames
于 2013-04-30T17:18:54.117 回答