2

我有一个包含 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 矩阵中,其中行是每个表,列是表列中的值。我试过使用lapply,as.matrixdata.matrix. 是否有某种组合可以解决问题?还是我应该先将表格转换为向量,然后再转换为矩阵?我知道循环通常是不鼓励的。

4

2 回答 2

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
于 2012-12-11T06:14:51.327 回答
2

我认为这也可以:

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

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

它通过lapplyingc告诉 amatrix成为 a的函数来工作vector。然后我们do.call一起递归地使用rbind它。

于 2012-12-11T07:21:06.680 回答