You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按列表和数据框名称合并两个嵌套列表中的R数据框

按名称合并嵌套列表中的对应数据框

我们需要将两个结构一致的嵌套列表中,同名同层级的数据框按行合并,最终得到结构相同的嵌套列表。以下是两种可行的解决方案:

方法一:使用purrr包(tidyverse生态)

利用purrr::map2可以递归处理嵌套列表的对应元素,代码简洁直观:

library(purrr)

# 两层嵌套的对应数据框行合并
list3 <- map2(list1, list2, ~map2(.x, .y, rbind))

方法二:基础R实现(无需额外包)

通过mapply和lapply的嵌套组合,实现相同逻辑:

list3 <- mapply(function(outer_x, outer_y) {
  # 遍历内层列表的名称,合并对应数据框
  inner_merged <- lapply(names(outer_x), function(df_name) {
    rbind(outer_x[[df_name]], outer_y[[df_name]])
  })
  # 为内层合并后的列表恢复原名称
  setNames(inner_merged, names(outer_x))
}, list1, list2, SIMPLIFY = FALSE)

验证结果

执行上述代码后,查看合并后的结果:

# 查看list_a下的df1
list3$list_a$df1
# 查看list_a下的df2
list3$list_a$df2
# 查看list_b下的df3
list3$list_b$df3

输出将完全符合预期的合并效果:对应名称的数据框按行拼接,列表层级结构保持不变。

注意:以上方法默认两个输入列表的层级结构和名称完全匹配,如果存在名称不匹配的元素,需要先处理名称交集(比如取intersect(names(list1), names(list2)))再进行合并。

内容的提问来源于stack exchange,提问作者joaovitorpigozzo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 16:24:13