【问题标题】:Unlist LAST level of a list in R取消列出 R 中列表的最后一级
【发布时间】:2022-01-09 07:35:23
【问题描述】:

我有一个类似 ll 的列表:

ll <- list(a = list(data.frame(c = 1, d = 2), data.frame(h = 3, j = 4)), b = list(data.frame(c = 5, d = 6), data.frame(h = 7, j = 9)))

我想取消嵌套/取消列出结构的最后一层(内部列表)。 请注意,每个列表都包含相同的结构。我要获取lj

lj <- list(a = (data.frame(c = 1, d = 2, h = 3, j = 4)), b = data.frame(c = 5, d = 6, h = 7, j = 9))

我尝试了以下代码但没有成功:

lj_not_success <- unlist(ll, recursive = F)

但是,此代码未列出 FIRST 级别,而不是 LAST 级别。

有什么线索吗?

【问题讨论】:

    标签: r list dplyr


    【解决方案1】:

    我们可能需要cbind 内部的list 元素而不是unlisting,因为预期的输出也是listdata.frames

    ll_new <- lapply(ll, function(x) do.call(cbind, x))
    

    -检查

    > identical(lj, ll_new)
    [1] TRUE
    

    【讨论】:

    • 有没有办法将您的代码与“bind_rows”一起使用,以将每个列表的名称/值作为变量包含在内?代码将以这种方式工作bind_rows(df, .id = 'grp')
    • @vog 你的意思是bind_cols 在当前上下文中,即purrr::map(ll, bind_cols),或者如果它是bind_rows,purrr::map(ll, ~ bind_rows(.x, .id = 'grp'))
    • 谢谢@Akrun!
    猜你喜欢
    • 2017-11-14
    • 2015-08-06
    • 2016-10-07
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    相关资源
    最近更新 更多