取消列出 R 中列表的最后一级

Posted

技术标签:

【中文标题】取消列出 R 中列表的最后一级【英文标题】:Unlist LAST level of a list in 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 级别。

有什么线索吗?

【问题讨论】:

【参考方案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!

以上是关于取消列出 R 中列表的最后一级的主要内容,如果未能解决你的问题,请参考以下文章

WIN7系统任务栏显示文件夹时,如何只显示最后一级?

如何在R中取消列出一个非常混乱的列表[重复]

如何仅在 C 中列出第一级目录?

iOS让键盘消失,取消第一响应,取消一级响应

基础管理类命

Android多级列表