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

R语言如何使用fread一次性批量读取多个文件并赋值

R批量读取snplist文件并按规则赋值方案

方案1:自动生成a1~a22独立变量(和手动逐行写代码效果完全一致)

先确认所有.snplist文件存放在R当前工作目录下,可通过getwd()查看当前路径,用setwd("你的文件实际存放路径")切换到目标目录后,运行以下代码即可:

library(data.table)
for (i in 1:22) {
  # 拼接对应序号的文件名
  current_file <- paste0(i, ".snplist")
  # 读取文件并动态赋值给a1、a2...a22变量
  assign(paste0("a", i), fread(current_file))
}

运行结束后工作环境中会直接生成a1到a22共22个变量,和你逐行手写a1 <- fread('1.snplist')的结果没有区别。

方案2:读取到命名列表统一管理(更推荐的规范写法)

如果后续需要对所有文件做批量处理,散列的独立变量会增加重复代码量,更推荐把所有读取结果存入统一列表:

library(data.table)
# 生成1-22对应的文件名向量
file_paths <- paste0(1:22, ".snplist")
# 批量读取所有文件
snp_data_list <- lapply(file_paths, fread)
# 给列表元素命名,和a1~a22一一对应
names(snp_data_list) <- paste0("a", 1:22)

需要调用对应文件内容时,直接用snp_data_list$a1、snp_data_list$a2即可,和独立变量使用体验一致,还支持直接用lapply对所有文件做批量操作(比如统一筛选列、统计行数、合并数据等),避免写大量重复代码。

适配非固定序号文件的写法

如果你的文件不是严格按1~22命名,或者路径下还有其他.snplist后缀的文件需要读取,可以自动匹配路径下所有符合后缀要求的文件,不需要手动写序号范围:

library(data.table)
# 自动识别当前路径下所有以.snplist结尾的文件
all_snp_files <- list.files(pattern = "\\.snplist$")
# 批量读取
snp_data_list <- lapply(all_snp_files, fread)
# 按文件名(去掉后缀)给列表元素命名
names(snp_data_list) <- gsub("\\.snplist$", "", all_snp_files)

如果需要给fread传递额外读取参数(比如指定无表头、分隔符、跳过行数等),直接在lapply中追加即可,例如:lapply(all_snp_files, fread, header = FALSE, sep = "\t")。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:42:25