我在R中有一个列表对象,其中包含更多列表,每个列表包含三个向量.生成三个矩阵的最快方法是什么,第一个将所有第一个向量作为行,第二个将所有第二个向量作为行,第三个具有所有第三个?例如,给定:
metalist <- list(list(c(1,1),c(11,11),c("a","a")),
list(c(2,2),c(22,22),c("b","b")),
list(c(3,3),c(33,33),c("c","c")))
我想得到三个矩阵(或data.frames),第一个包括:
1 1
2 2
3 3
第二个由
11 11
22 22
33 33
而第三个由
a a
b b
c c
鉴于实际上金属家有50,000个列表对象,一个for循环提取向量元素并逐步组装矩阵需要永远,所以我会更快地寻找一些东西.我猜可能有一些聪明的使用unlist(),但我无法弄清楚.
最佳答案 以下将创建三个矩阵的列表:
my_outcome <- list()
for (i in 1:3)
{
my_outcome[[i]] <- t(as.data.frame(lapply(metalist, `[[`, i)))
}
它确实使用了循环,但只使用了矩阵的数量,因此它应该适用于您的情况.