R语言如何从嵌套列表合并指定数据框(无需循环)
合并嵌套列表中的数据框(无循环)
针对你给出的嵌套列表结构,这里提供两种简洁的非循环方法,可直接提取并合并其中的df数据框:
方法1:Base R 原生实现
先用lapply遍历主列表,提取每个子列表里的df元素,得到一个仅包含数据框的新列表,再用do.call(rbind, ...)合并所有行:
mlst = list(test = list(df = data.frame(x = 1:10, y = 21:30), list(c(1:2))), test2 = list(df = data.frame(x = 1:10, y = 21:30), list(c(1:2)))) # 基础写法 combined_df <- do.call(rbind, lapply(mlst, function(x) x$df)) # 更简洁的写法:用[[直接提取命名元素 combined_df <- do.call(rbind, lapply(mlst, "[[", "df"))
方法2:tidyverse 工具包实现
借助purrr包的map_dfr函数,一步完成遍历提取+按行合并操作:
library(purrr) combined_df <- map_dfr(mlst, ~ .x$df)
两种方法最终都会得到行数为20(10+10)的合并数据框,完全保留原数据框的列结构。
内容的提问来源于stack exchange,提问作者M. Beausoleil
相关产品推荐
相关产品推荐

