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

在R循环中将数据框列名替换为对应CSV文件名

问题解决方法

你的代码核心问题是把数据框df当成列名赋值了,这完全不对。正确的做法是提取当前循环的文件名(去掉.csv后缀),用它替换“MEAN”列名。另外还要注意正则匹配的小细节,避免误匹配文件。

修正后的代码如下:

setwd("C:/Desktop/Rain_totals")
# 用正则精确匹配以.csv结尾的文件,避免匹配到名字里带csv的其他文件
fs <- list.files(pattern = "\\.csv$")
for (f in fs) {
  df <- read.csv(f)
  # 提取去掉.csv后缀的文件名(也就是日期字符串)
  new_colname <- tools::file_path_sans_ext(f)
  # 替换MEAN列名
  colnames(df)[colnames(df) == "MEAN"] <- new_colname
  # 保存格式化后的文件,row.names=FALSE避免自动添加行号列(不需要可删除)
  write.csv(df, gsub('\\.csv', '_formatted.csv', f), row.names = FALSE)
}

关键修正点:

  • 用tools::file_path_sans_ext(f)安全提取无后缀的文件名,比gsub更可靠(比如遇到带多个点的文件名也能正确处理)。
  • 把pattern = ".csv"改成pattern = "\\.csv$",因为.在正则里是通配符,\\.才表示实际的点,$表示匹配字符串结尾,确保只找真正的CSV文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:50:22