【问题标题】: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 中如何做到这一点?

【问题讨论】:

    标签: r list flatten


    【解决方案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 是要走的路。

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

        【讨论】:

          猜你喜欢
          • 2021-12-18
          • 2022-11-17
          • 1970-01-01
          • 2021-08-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-05
          • 1970-01-01
          相关资源
          最近更新 更多