R语言:基于列表内dataframe的location值重命名rainfall列并合并数据
解决方案
方法1:tidyverse 实现(推荐,代码简洁易读)
library(tidyverse) result <- alldfs %>% map(function(df) { # 提取当前数据框对应的唯一location值 loc <- unique(df$location) # 仅保留rainfall列并重命名 df %>% select(rainfall) %>% rename_with(~ paste0("Rainfall.", loc), rainfall) }) %>% # 拼接所有列得到最终数据框 bind_cols()
方法2:base R 实现(无需加载第三方包)
processed <- list() for (df in alldfs) { loc <- unique(df$location) col_name <- paste0("Rainfall.", loc) processed[[col_name]] <- df$rainfall } result <- as.data.frame(processed)
原有代码错误原因
你写的代码存在两个核心问题:
df$rainfall提取的是向量类型,rename_with是数据框的操作函数,无法直接作用于向量rename_with的参数传递逻辑错误,没有正确完成前缀和location值的拼接
上面两种实现都可以自动适配任意数量的location值,无需手动指定列名,输出的result结构完全符合你的需求,可以直接用于后续箱线图绘制。
内容的提问来源于stack exchange,提问作者Pad
相关产品推荐
相关产品推荐

