如何在R中将不同文件夹下前缀相同的文件加载到一个dataframe中?
在R中批量读取指定文件夹下的目标文件到单个DataFrame
步骤1:获取所有目标文件的完整路径
先通过list.files()递归查找所有以01_qc-开头的文件,再筛选出存放在Data开头文件夹中的文件:
# 获取所有符合文件名前缀的文件完整路径 file_paths <- list.files( path = ".", # 替换为你的根目录路径,比如"/home/user/data_root" pattern = "^01_qc-", # 匹配文件名以01_qc-开头 recursive = TRUE, full.names = TRUE ) # 筛选出路径中包含"Data"文件夹的文件(确保只读取目标文件夹下的内容) file_paths <- grep("Data", file_paths, value = TRUE)
步骤2:批量读取并合并为单个DataFrame
根据你的文件格式选择对应的读取函数,以下是两种常用方案:
方案一:使用tidyverse工具链(推荐)
如果是CSV/TSV等文本格式,用readr包的读取函数,配合purrr的map_df自动合并:
library(tidyverse) # 读取所有文件并合并,可选添加来源文件列 combined_df <- map_df(file_paths, function(file) { read_csv(file) %>% # 若为TSV则用read_tsv mutate(source_file = file) # 新增列标记数据来源,可省略 })
方案二:使用基础R
无需额外安装包,适合快速处理:
# 批量读取文件到列表 file_list <- lapply(file_paths, read.csv) # 其他格式对应read.table/read.delim等 # 合并列表为单个DataFrame combined_df <- do.call(rbind, file_list)
注意事项
- 如果是Excel文件,改用
readxl包的read_excel函数,替换上述代码中的读取函数即可。 - 若文件编码特殊(如GBK),可在读取函数中指定编码,例如
read_csv(file, locale = locale(encoding = "GBK"))。 - 确保所有文件的列名、列类型完全一致,否则合并时可能出现报错或数据错位。
内容的提问来源于stack exchange,提问作者starski
相关产品推荐
相关产品推荐

