如何在循环中引用多个矩阵

时间:2013-04-30 17:17:34

标签: r loops matrix

我有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)

1 个答案:

答案 0 :(得分:1)

将它们列入清单。然后,您可以循环遍历索引,或循环遍历列表元素本身。

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

如果矩阵结构相似,我会建议一个数组(所以数组沿着第三维的每个“切片”都是你当前的2d矩阵之一),因为它会更快。

编辑:如何将它们列入列表

最好的方法是首先在列表中创建它们。但是如果你想要得到你所拥有的东西,首先要生成一个带有名字的字符向量。

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

然后使用get

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

然后您可以使用以下命名来命名:

names(listOfMat) <- matNames