2013-04-30 66 views
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) 

回答

1

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

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

如果矩阵被类似结构,我建议一个阵列(沿着第三维阵列的所以每个“片”是当前的2D矩阵中的一个),因为它会更快。

编辑:如何把它们放在一个列表

,最好的办法就是在首位的列表来创建它们。但是,如果你想采取你已经得到的,首先生成一个字符向量,其中的名称。

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

然后用get

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

然后,您可以用它们命名为:

names(listOfMat) <- matNames 
+0

谢谢,关于矩阵构建?这可能吗? – 2013-04-30 17:22:00

+0

'lapply(1:4,matrix,nrow = 8,ncol = 44)'给出了24个矩阵的列表。 – Roland 2013-04-30 17:24:31

+0

感谢罗兰,但再次为每个生成的矩阵,我必须重新命名它的权利? – 2013-04-30 17:40:26