将表列表转换为矩阵

时间:2012-12-11 06:10:20

标签: r list matrix

我有一个包含270个表的列表。每个表有3列22行,看起来像这样:

                1         2         3
lx      -0.206628 -0.148405 -0.159344    
ly       0.017395  0.043114  0.027263    
lz      -0.044009  0.005597 -0.016906
...

我需要将这些表中的每一个合并为一个巨大的270x66矩阵,其中行是每个表,列是表列中的值。我尝试过使用lapplyas.matrixdata.matrix。是否有某种组合可以解决这些问题?或者我应该首先将表转换为向量,然后转换为矩阵?我知道循环通常是不鼓励的。

2 个答案:

答案 0 :(得分:5)

您可以使用unlist创建一个向量,然后创建一个新矩阵:

matrix(unlist(mylist), nrow = length(mylist), byrow = TRUE)

一个例子:

mylist <- rep(list(matrix(1:9, 3)), 3)
matrix(unlist(mylist), nrow = length(mylist), byrow = TRUE)
# 
#       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
# [1,]    1    2    3    4    5    6    7    8    9
# [2,]    1    2    3    4    5    6    7    8    9
# [3,]    1    2    3    4    5    6    7    8    9

答案 1 :(得分:2)

我认为这也有用:

#create a list like you discussed
LIST <- lapply(1:270,  function(i) matrix(1:66, ncol =3))

do.call(rbind, lapply(LIST, c))

它通过lapply函数c工作,该函数告诉matrix成为vector。然后我们使用do.call递归rbind这一切。