如何将嵌套列表的两个维度完全展平?
Posted
技术标签:
【中文标题】如何将嵌套列表的两个维度完全展平?【英文标题】:How to flatten exactly two dimensions of the nested list? 【发布时间】:2013-07-23 04:00:43 【问题描述】:假设我有一个列表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, a2
和a3
。
在 Mathematica 中我会简单地使用 Flatten[a,1]
,但是在 R 中如何做到这一点?
【问题讨论】:
【参考方案1】:很简单:
Reduce("c",a)
就是这样。
【讨论】:
【参考方案2】:将unlist
与recursive=FALSE
一起使用:
dput(unlist(a,recursive=FALSE))
list(1, 2, list("X", 10), "A", list("B"), "C", list("D", list(
"E")), 3.14)
【讨论】:
【参考方案3】:unlist(a, recursive=FALSE)
是你要找的吗?
【讨论】:
是的,它是......它看起来比我的解决方案更好。【参考方案4】:do.call('c', a)
会比Reduce('c', a)
更快。 unlist(a, recursive = FALSE, use.names = FALSE)
会比 unlist(a, recursive = FALSE)
更快。在这种情况下,unlist
是要走的路。
会作为评论发布,但我似乎不能。
【讨论】:
以上是关于如何将嵌套列表的两个维度完全展平?的主要内容,如果未能解决你的问题,请参考以下文章