如何在R语言中为多个数据框分别添加对应年份列?
解决R语言给多个数据框添加对应年份列的问题
原代码的问题点
- 创建向量/列表错误:R中不能用
()生成向量或列表,向量要用c(),列表要用list() - 列表索引错误:访问列表单个元素需用双括号
[[i]],单括号[i]返回的是子列表,无法直接添加列 - 列名大小写不一致:需求是
year列,原代码写的是Year,需统一
基础R解决方案
# 生成年份向量 years <- c(2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022) # 将数据框存入列表 df_list <- list(df1, df2, df3, df4, df5, df6, df7, df8) # 循环为每个数据框添加year列 for (i in 1:8) { df_list[[i]]$year <- years[i] } # 若需将处理后的数据框放回全局环境(更新原df1至df8) names(df_list) <- paste0("df", 1:8) list2env(df_list, envir = .GlobalEnv)
更简洁的tidyverse方案(需安装purrr、dplyr包)
library(purrr) library(dplyr) years <- 2015:2022 df_list <- list(df1, df2, df3, df4, df5, df6, df7, df8) # 批量添加年份列 df_list <- map2(df_list, years, ~ mutate(.x, year = .y)) # 更新全局环境中的数据框 names(df_list) <- paste0("df", 1:8) list2env(df_list, envir = .GlobalEnv)
内容的提问来源于stack exchange,提问作者kas
相关产品推荐
相关产品推荐

