【发布时间】:2013-10-30 07:08:37
【问题描述】:
考虑以下列表:
lst = list(list(c(1,2), c(3,4)),list(c(5,6), c(7,8)),list(c(9,10), c(11,12)))
列表lst 包含三个列表,每个列表包含两个向量作为元素。我想按索引组合基础列表的元素。换句话说,我想将列表 1 中的向量 1 与列表 2 和列表 3 的向量合并,并将列表 1 中的向量 2 与列表 2 和列表 3 的向量合并,等等...
这是我希望达到的结果:
res = list(c(1,2,5,6,9,10), c(3,4,7,8,11,12))
我知道如果有两个单独的列表,可以通过以下方式实现:
mapply(c, lst1, lst2)
但是,我不确定如何使用列表列表复制相同的逻辑。
有什么有效的方法来实现吗?请记住,实际上,lst 是一个由 5000 个列表组成的列表,每个底层列表都包含大量向量。
谢谢!
【问题讨论】:
-
也许
sapply(1:length(lst) function(j)list[[j]][[1]])和类似但以[[2]]结尾就足够了吗? -
问题在于,实际上,每个单独的列表都包含更多的向量,而不仅仅是 2 个。无限期地为每个向量编写相同的方程是不高效/不可行的。跨度>