如何基于名称为多个data.frame批量添加对应年份的ANO列
批量为多个data.frame添加年份列的解决方案
可以通过以下步骤用lapply完成批量操作,无需逐个修改:
定义目标data.frame名称向量
先把所有需要处理的data.frame的名称存成字符向量:df_names <- c("subset_2018_empenhada", "subset_2019_empenhada", "subset_2020_empenhada", "subset_2021_empenhada")用
lapply批量处理
遍历名称向量,对每个data.frame执行提取年份、添加列的操作:modified_dfs <- lapply(df_names, function(name) { # 获取当前环境中的data.frame对象 df <- get(name) # 从名称中提取四位数字的年份(适配你的命名规则) year <- as.integer(gsub(".*_(\\d{4})_.*", "\\1", name)) # 添加ANO列,值为对应年份 df$ANO <- year # 返回修改后的data.frame df })将修改后的对象放回全局环境
把处理后的data.frame列表重新命名并赋值回全局环境,覆盖原对象:names(modified_dfs) <- df_names list2env(modified_dfs, envir = .GlobalEnv)
说明
- 正则表达式
.*_(\\d{4})_.*会匹配名称中被下划线包裹的四位数字,刚好适配你的年份格式;后续若有其他年份的data.frame,只需把名称加入df_names向量即可。 - 整个过程只需几行代码,无论data.frame数量多少都能高效完成。
内容的提问来源于stack exchange,提问作者Danilo Imbimbo
相关产品推荐
相关产品推荐

