【问题标题】:Flatten nested lists in a list展平列表中的嵌套列表
【发布时间】:2018-07-04 17:17:01
【问题描述】:

我有一个包含嵌套列表的列表。

LIST2 <- list(list("USA","WY","TX","AZ","Canada", "CA", "NY", 'Russia', 'NY'), 
             list(c("USA","Canada","CA","WY", 'China', 'AZ', 'AZ', 'AZ', 'WY')), 
             list(c("USA","Australia","CA","AR", 'AZ', 'WY', 'New Zealand', 'Japan', 'Japan', 'NJ')),
             list(list('Australia', 'Australia', 'Japan', 'Malaysia' )),
             list(c('USA', 'Australia', 'Japan', 'Malaysia' )))

我想以某种方式展平第一个和第四个列表,以便它们与其他列表具有相同的形式。这可能吗?

【问题讨论】:

  • 可能是lapply(LIST2, function(i) list(unlist(i, recursive = TRUE))) ?

标签: r list


【解决方案1】:

我们可以使用rapply

lapply(LIST2, rapply, f = c)

【讨论】:

  • 不错,一直忘记 rapply。我认为 OP 希望输出为列表列表。
  • @zx8754 谢谢,然后像你所做的那样用list包装将是lapply(LIST2, function(x) list(rapply(x, f = c)))的方法
  • 不错 - 也比this solution 更好地保留了我的数据结构@ 不知道为什么我的输出列表仍然嵌套一层深。但与我之前的高度嵌套列表相比,这是一个小问题,其中元素长度不等
【解决方案2】:

遍历列表,递归地取消列表,然后作为列表返回:

lapply(LIST2, function(i) list(unlist(i, recursive = TRUE)))

【讨论】:

    【解决方案3】:

    这应该为你做:

    LIST2 <- lapply(LIST2, unlist)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-09
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      • 2015-04-13
      • 2013-11-13
      相关资源
      最近更新 更多