You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何在循环中为多个dataframe的列名添加对应数字前缀

R批量重命名多dataframe列名解决方案

你的代码存在两处需要调整的逻辑:

  • col_prefix函数没有用到传入的Mth参数,导致前缀固定
  • 循环中没有提取每个dataframe对应的序号,且修改后的dataframe没有回写至全局环境,修改无法生效

第一步:修正列名前缀函数

col_prefix <- function(df, Mth){
  # 仅修改ID以外的列名,拼接对应月份序号
  colnames(df)[2:ncol(df)] <- paste0("Mth", Mth, "_", colnames(df)[2:ncol(df)])
  return(df)
}

第二步:调整循环逻辑

无需手动输入50个dataframe名称,自动生成列表同时匹配序号:

# 自动生成df1到df50的名称列表
dfList <- paste0("df", 1:50)

for (idx in seq_along(dfList)){
  # 读取对应dataframe
  temp_df <- get(dfList[idx])
  # 传入对应序号调用重命名函数
  temp_df <- col_prefix(temp_df, Mth = idx)
  # 将修改后的dataframe回写至全局环境
  assign(dfList[idx], temp_df)
}

更规范的优化方案(可选)

建议将所有同结构dataframe存入列表统一管理,避免全局环境变量过多混淆:

# 批量读取并重命名后存入列表
df_list <- lapply(1:50, function(mth_idx) {
  col_prefix(get(paste0("df", mth_idx)), Mth = mth_idx)
})
# 给列表元素命名,方便后续调用
names(df_list) <- paste0("df", 1:50)

# 后续调用df1直接使用 df_list[["df1"]] 即可

内容的提问来源于stack exchange,提问作者Mkew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:15:03