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

R语言遍历子文件夹txt文件批量处理生成单汇总文件方法

问题根因

你当前代码的核心问题有两个:

  • 调用dir()时未设置full.names = TRUE参数,返回的只有txt文件名本身,没有拼接文件所在的子文件夹完整路径,R无法定位到具体文件,自然没法开展后续读取操作
  • 现有代码仅完成了文件名收集,没有嵌套「读取单个txt-执行自定义分析-暂存结果」的逻辑,也没有最终跨文件汇总输出的步骤
完整实现方案

你可以直接套用下面的代码框架,仅需替换自己的txt读取、分析逻辑即可适配需求:

# 1. 配置父文件夹基础路径
parent_folder <- "C:/.../18_0101"

# 2. 一次性获取所有子文件夹内txt文件的完整路径
all_txt_path <- list.files(
  path = parent_folder,
  pattern = "\\.txt$", # 匹配后缀为txt的文件
  full.names = TRUE, # 返回完整文件路径,而非仅文件名
  recursive = TRUE # 递归遍历所有子文件夹
)

# 3. 初始化结果存储列表
all_result <- list()

# 4. 遍历所有txt文件执行统一分析流程
for (i in seq_along(all_txt_path)) {
  # 读取当前txt文件,根据自身文件格式调整参数即可
  current_data <- read.table(
    file = all_txt_path[i],
    header = TRUE, # 文件含表头设为TRUE,无表头改FALSE
    sep = "\t", # 按实际分隔符修改,逗号分隔填",",空格分隔填" "
    stringsAsFactors = FALSE,
    fileEncoding = "UTF-8" # 按文件实际编码调整,中文文件常用"GBK"
  )
  
  # --------------------------
  # 替换为你自己的单文件分析逻辑
  # 输出结果建议为数据框格式,方便后续合并
  current_analysis_res <- data.frame(
    file_path = all_txt_path[i],
    # 自定义计算的指标列追加在这里,例如:
    # mean_value = mean(current_data$target_column, na.rm = TRUE),
    # row_count = nrow(current_data)
  )
  # --------------------------
  
  # 将当前文件分析结果存入汇总列表
  all_result[[i]] <- current_analysis_res
}

# 5. 合并所有文件的分析结果为单个汇总表
final_summary <- do.call(rbind, all_result)

# 6. 将汇总结果输出到父文件夹下
write.csv(
  x = final_summary,
  file = file.path(parent_folder, "all_subfolder_summary.csv"),
  row.names = FALSE,
  fileEncoding = "UTF-8"
)
可选:按子文件夹维度聚合的版本

如果你需要先完成单个子文件夹内所有txt的聚合分析,再输出子文件夹维度的汇总结果,可以使用以下逻辑:

parent_folder <- "C:/.../18_0101"
# 获取所有子文件夹路径
sub_folders <- list.dirs(parent_folder, recursive = TRUE, full.names = TRUE)[-1]
folder_result_list <- list()

for (j in seq_along(sub_folders)) {
  # 获取当前子文件夹下所有txt的完整路径
  current_folder_txt <- list.files(
    path = sub_folders[j],
    pattern = "\\.txt$",
    full.names = TRUE
  )
  
  # 读取并合并当前子文件夹内所有txt数据
  folder_data <- lapply(current_folder_txt, function(txt_path) {
    read.table(txt_path, header = TRUE, sep = "\t", stringsAsFactors = FALSE)
  })
  folder_data <- do.call(rbind, folder_data)
  
  # 执行子文件夹维度的自定义分析
  folder_res <- data.frame(
    sub_folder_path = sub_folders[j],
    # 自定义子文件夹维度的计算结果列
  )
  
  folder_result_list[[j]] <- folder_res
}

# 合并所有子文件夹结果并输出
folder_final_summary <- do.call(rbind, folder_result_list)
write.csv(folder_final_summary, file.path(parent_folder, "folder_level_summary.csv"), row.names = FALSE)
注意事项
  • 读取txt时务必根据实际文件格式调整read.table参数,常见调整项包括分隔符sep、表头设置header、缺失值标识na.strings、编码格式fileEncoding
  • 如果单文件体积较大,不要保留全量读取的数据,在遍历环节仅提取需要的字段做计算即可,降低内存占用
  • 调试阶段可以在循环开头加一行print(paste("正在处理:", all_txt_path[i])),打印当前处理的文件路径,快速定位格式异常的问题文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:48:17