1

假设我有一个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

4 回答 4

5

unlist与 一起使用recursive=FALSE

dput(unlist(a,recursive=FALSE))
list(1, 2, list("X", 10), "A", list("B"), "C", list("D", list(
    "E")), 3.14)
于 2013-07-23T21:12:01.337 回答
3

do.call('c', a)那么会更快Reduce('c', a)unlist(a, recursive = FALSE, use.names = FALSE)那么会更快unlist(a, recursive = FALSE)unlist是在这种情况下要走的路。

会发表评论,但我似乎不能。

于 2013-07-23T21:26:50.627 回答
1

这很简单:

Reduce("c",a)

就这样。

于 2013-07-23T21:11:03.520 回答
1

unlist(a, recursive=FALSE)你要找的吗?

于 2013-07-23T21:15:22.413 回答