如何在R语言中将外部dataframe合并到列表的对应组件中?
将dataframe合并到列表对应组件的解决方案
需要将additions中的add列按name匹配,添加到exlist的每个对应dataframe中,最终得到与finlist一致的结果。以下是两种可行的实现方式:
方法1:Base R实现
利用lapply遍历列表中的每个dataframe,通过唯一name匹配additions中的对应值,再将该值重复添加为新列:
result_list <- lapply(exlist, function(df) { # 获取当前dataframe的唯一name target_name <- unique(df$name) # 匹配对应的add值 target_add <- additions$add[additions$name == target_name] # 合并新列 cbind(df, add = rep(target_add, nrow(df))) })
方法2:Tidyverse风格实现
借助purrr和dplyr的函数,更简洁地完成匹配与合并:
library(purrr) library(dplyr) # 提取每个列表元素的唯一name list_names <- sapply(exlist, \(x) unique(x$name)) # 匹配对应的add值 add_values <- additions$add[match(list_names, additions$name)] # 遍历列表并添加add列 result_list <- map2(exlist, add_values, \(df, val) mutate(df, add = val))
验证结果
运行以下代码可确认结果与finlist完全一致:
identical(result_list, finlist) # 输出:TRUE
内容的提问来源于stack exchange,提问作者ljh2001
相关产品推荐
相关产品推荐

