如何平整嵌套列表的两个维度?

时间:2013-07-23 21:07:04

标签: r list flatten

假设我有一个列表a,如下所示:

a1<-list(1,2,list("X",10))
a2<-list("A",list("B"),"C")
a3<-list(list("D",list("E")),3.14)
a<-list(a1,a2,a3)

如何将a转换为:

list(1,2,list("X",10),"A",list("B"),"C",list("D",list("E")),3.14)

我想要一个适用于任意数量a1, a2, a3... an的解决方案,不仅适用于上面示例中的a1, a2a3

在Mathematica中我只会使用Flatten[a,1],但是如何在R中做到这一点?

4 个答案:

答案 0 :(得分:5)

unlistrecursive=FALSE

一起使用
dput(unlist(a,recursive=FALSE))
list(1, 2, list("X", 10), "A", list("B"), "C", list("D", list(
    "E")), 3.14)

答案 1 :(得分:3)

do.call('c', a)会比Reduce('c', a)更快。 unlist(a, recursive = FALSE, use.names = FALSE)会比unlist(a, recursive = FALSE)更快。 unlist是这种情况下的方法。

会发表评论,但我似乎无法发表。

答案 2 :(得分:1)

很简单:

Reduce("c",a)

就是这样。

答案 3 :(得分:1)

unlist(a, recursive=FALSE)您要找的是什么?