R语言如何解除列表最内层嵌套并合并同结构数据框
R嵌套列表内层合并解决方案
你可以对列表的每个顶层元素调用列拼接函数实现需求,两种常用实现方式如下:
方法1:使用purrr包(代码更简洁)
如果你已安装tidyverse系列工具包,可直接用map遍历每个顶层元素,对其下属的内层数据框执行列拼接:
library(purrr) lj <- map(ll, ~ do.call(cbind, .x))
输出验证:
> lj $a c d h j 1 1 2 3 4 $b c d h j 1 5 6 7 9
完全匹配你需要的输出格式。
方法2:纯Base R实现
不想加载第三方包可直接用基础函数lapply实现相同逻辑:
lj <- lapply(ll, function(x) do.call(cbind, x))
原代码失败原因
unlist(recursive = F)的作用是展开当前调用层级的列表元素,你直接对最外层的ll调用该函数,自然只会展开最外层结构。你需要的操作是对每个顶层元素对应的内层列表做数据框合并,而非直接展开外层列表。
内容的提问来源于stack exchange,提问作者vog
相关产品推荐
相关产品推荐

