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

在R语言中如何读取不同目录下的多张同名数据表?

完全可以通过list.files()和lapply()的组合实现该需求,仅用R基础函数即可完成,无需安装额外扩展包。

具体操作步骤

步骤1:获取所有quant.txt的完整路径

用list.files()遍历父目录下的所有子文件夹,匹配目标文件:

# 先设置工作目录为所有子文件夹所在的父目录,也可直接在path参数填写父目录的绝对路径
setwd("替换为你的父目录实际路径")

# 匹配所有子文件夹下的quant.txt,返回完整文件路径
file_paths <- list.files(
  path = ".", # 当前工作目录即目标父目录
  pattern = "quant\\.txt$", # 精确匹配文件名,$限定文件名必须以quant.txt结尾
  recursive = TRUE, # 开启子目录递归遍历
  full.names = TRUE # 返回完整路径,否则仅返回文件名无法正常读取
)

可以先打印file_paths检查路径是否正确,确认12个目标文件都被匹配到再进行下一步。

步骤2:批量读取所有文件

用lapply()遍历路径列表,逐个读取文件,最终返回一个列表,每个元素对应一个quant.txt的内容:

# 按实际文件格式选择读取函数、调整参数,以下为通用示例
# 示例默认文件带表头、制表符分隔,可根据你的实际情况修改sep、header等参数
quant_list <- lapply(file_paths, function(x) {
  read.table(x, header = TRUE, sep = "\t", stringsAsFactors = FALSE)
})

# 可选操作:给列表元素命名,标记每个数据对应的来源子文件夹
names(quant_list) <- basename(dirname(file_paths))

可选操作:合并所有数据为一个总数据框

如果12个文件的列结构完全一致,需要合并后统一分析,可以用以下代码:

# base R 原生方法
total_quant <- do.call(rbind, quant_list)

# 也可使用dplyr包的bind_rows,兼容性更强
# library(dplyr)
# total_quant <- bind_rows(quant_list, .id = "source_folder") # .id参数可新增一列标记数据来源的子文件夹名称
常见注意事项
  • 读取报错时优先校验分隔符、表头、文件编码等参数,可先用单个文件测试读取参数,确认无误后再批量执行
  • 若12个文件的列结构不一致,建议保留列表格式,单独处理每个文件的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:09:03