我有一个包含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.matrix
和data.matrix
。是否有某种组合可以解决这些问题?或者我应该首先将表转换为向量,然后转换为矩阵?我知道循环通常是不鼓励的。
答案 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
这一切。