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

如何用R从多文件夹提取目标Excel文件,归集到单文件夹并合并为DataFrame

解决方案:批量提取文件并合并为DataFrame

一、批量提取目标文件到统一文件夹

  1. 定位所有目标文件
    使用list.files()的recursive = TRUE参数遍历所有子文件夹,通过pattern匹配目标文件的特征(比如特定后缀、文件名),full.names = TRUE确保获取完整文件路径:
# 替换为你的解压后数据集根目录
root_dir <- "path/to/unzipped_dataset"

# 示例:匹配所有后缀为.csv的文件,根据实际情况修改pattern(比如"data.txt$"匹配名为data.txt的文件)
target_files <- list.files(root_dir, pattern = "\\.csv$", recursive = TRUE, full.names = TRUE)
  1. 创建归集文件夹
output_dir <- "collected_files"
dir.create(output_dir, showWarnings = FALSE) # 避免文件夹已存在时抛出警告
  1. 复制文件(避免重名覆盖)
    如果不同子文件夹下的目标文件名可能重复,建议给文件添加原文件夹名称作为前缀,防止覆盖:
for (file in target_files) {
  # 获取原文件夹名称
  folder_prefix <- basename(dirname(file))
  # 构建新文件名
  new_file <- paste0(folder_prefix, "_", basename(file))
  # 复制到目标目录
  file.copy(file, file.path(output_dir, new_file))
}

若确定文件名无重复,可直接简化为:

file.copy(target_files, output_dir)

二、合并所有文件为单个DataFrame

每个文件仅含一行数据,可通过批量读取后合并实现:

基础R实现

# 批量读取文件(根据实际格式选择read.table/read.csv等)
data_list <- lapply(target_files, function(file_path) {
  read.csv(file_path, stringsAsFactors = FALSE)
})

# 合并为单个DataFrame
combined_df <- do.call(rbind, data_list)

dplyr简化实现

library(dplyr)

combined_df <- target_files %>%
  lapply(read.csv, stringsAsFactors = FALSE) %>%
  bind_rows()

注意事项

  • 若文件格式不是CSV,替换read.csv为对应读取函数(如read.table读取纯文本文件);
  • 若存在编码问题,在读取函数中添加encoding参数(如encoding = "UTF-8");
  • 若部分文件读取失败,可在lapply中加入tryCatch跳过错误文件:
data_list <- lapply(target_files, function(file_path) {
  tryCatch(read.csv(file_path, stringsAsFactors = FALSE), error = function(e) NULL)
})
# 过滤掉读取失败的空元素
data_list <- Filter(Negate(is.null), data_list)
combined_df <- do.call(rbind, data_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:47:35