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

如何将嵌套列表中的多个data.frame合并为单个data.frame?

解决嵌套列表中多层data.frame的合并问题

看起来你遇到的核心问题是嵌套列表的层级不匹配——你的dat是两层嵌套结构:外层列表的每个元素本身又是包含多个data.frame的子列表,直接用ldply(dat, data.frame)或者do.call(rbind, dat)这类方法,没法正确识别内层的data.frame,自然合并失败。下面给你几个可行的解决方案:

方法1:用dplyr+purrr(推荐,代码简洁)

先通过flatten()把两层嵌套的列表“拍平”成单层的data.frame列表,再用bind_rows()合并:

library(dplyr)
library(purrr)

# 先扁平化嵌套列表,再合并所有data.frame
final_df <- dat %>% flatten() %>% bind_rows()

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

用unlist()配合recursive = FALSE提取所有内层的data.frame到一个单层列表,再用do.call(rbind, ...)合并:

# 提取所有内层data.frame到单层列表,recursive=FALSE避免拆碎data.frame
flat_list <- unlist(dat, recursive = FALSE)
# 合并所有元素
final_df <- do.call(rbind, flat_list)

方法3:用plyr的ldply(适配你之前尝试的思路)

你之前用ldply没成功,是因为没先处理外层列表里的子列表。可以给ldply传一个匿名函数,先把每个外层子列表里的data.frame合并,再整体合并:

library(plyr)

final_df <- ldply(dat, function(sub_list) do.call(rbind, sub_list))

验证结果

运行任意一种方法后,你都会得到想要的合并后的data.frame:

ID Gender         Phrase       Phrase2
1  1   Male          Hello       Goodbye
2  1 Female Good afternoon       Goodbye
3  2   Male          Hello Good afternoon
4  2 Female        Goodbye       Goodbye

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:35:37