处理列表对象

我在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)))
}

它确实使用了循环,但只使用了矩阵的数量,因此它应该适用于您的情况.

点赞