如何将嵌套列表的两个维度完全展平?

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, a2a3

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

【问题讨论】:

【参考方案1】:

很简单:

Reduce("c",a)

就是这样。

【讨论】:

【参考方案2】:

unlistrecursive=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 是要走的路。

会作为评论发布,但我似乎不能。

【讨论】:

以上是关于如何将嵌套列表的两个维度完全展平?的主要内容,如果未能解决你的问题,请参考以下文章

如何展平 numpy 数组的最后两个维度? [复制]

是否有展平嵌套元素列表的功能?

列表展平的时间复杂度

在python中展平嵌套字符串列表

如何将两个列表合并到一个展平中是行不通的

如何使用嵌套字典列表展平熊猫数据框中的列