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

R语言如何批量遍历文件夹CSV文件执行相同处理后按原名保存

现有代码的问题
  • 未指定目标文件夹路径,也未筛选.csv后缀文件,会读入文件夹内所有类型文件引发报错
  • 混用lapply与for循环,逻辑冲突:lapply本身已承担遍历功能,内部嵌套for循环会导致每次迭代都重复读取全部文件,最终仅保留最后一个文件的处理结果
  • 读取CSV时遗漏单文件逻辑中的header=FALSE参数,会将首行数据识别为表头,和预期处理逻辑不一致
  • 未做输出路径隔离,直接写入原路径会覆盖原始数据,一旦处理逻辑出错无法找回原文件
  • 嵌套的for循环未添加花括号限定作用域,仅read.csv行在循环执行范围内,后续处理步骤未参与循环
修正后代码
# 配置输入文件夹路径,替换为实际目标路径即可
input_dir <- "\\\\dcf.network\\data\\R\\Test Folder"
# 单独创建输出文件夹存放处理后文件,避免覆盖原数据
output_dir <- file.path(input_dir, "processed")
if (!dir.exists(output_dir)) dir.create(output_dir)

# 仅提取文件夹内所有.csv后缀文件的完整路径
csv_files <- list.files(
  path = input_dir,
  pattern = "\\.csv$",
  full.names = TRUE
)

# 批量处理
lapply(csv_files, function(file_path) {
  # 按单文件逻辑读取数据
  df <- read.csv(file_path, header = FALSE)
  # 执行原有处理逻辑
  df$V1 <- df$V2[3]
  df <- df[!(df$V9 == ""), ]
  keep_cols <- c("V1","V2","V3","V4","V9")
  df <- df[keep_cols]
  # 保留原文件名输出到指定文件夹
  write.csv(
    df,
    file = file.path(output_dir, basename(file_path)),
    row.names = FALSE
  )
})
使用说明
  • 若确认需要直接覆盖原始文件,可将写入路径直接替换为原文件路径file_path,但优先建议使用独立输出文件夹留存原始数据
  • 写入文件时添加row.names = FALSE参数,避免输出文件自动生成多余的行号列
  • 正则规则\\.csv$会严格匹配后缀为.csv的文件,避免误读其他格式文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:57:21