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

R语言list.files函数路径通配符不生效问题求助

R语言list.files用通配符失败的原因及解决方法

问题原因

list.files()的path参数仅支持传入具体的目录路径,无法识别路径中的*这类shell通配符。你代码里写的./Unzipped/",input_files[1],"/Variants/*/"会把*当作路径的一部分去查找,而不是用来匹配任意子目录,自然找不到对应文件,返回character(0)。

解决方法

方法1:先获取子目录再遍历找文件

先拿到Variants目录下的所有子目录,再逐个在这些子目录里查找.tsv文件:

# 获取Variants下的所有直接子目录
sub_dirs <- list.dirs(path = paste0("./Unzipped/", input_files[1], "/Variants"), recursive = FALSE)
# 遍历子目录,收集所有tsv文件
tsv_files <- unlist(lapply(sub_dirs, function(dir) {
  list.files(path = dir, pattern = "tsv$", full.names = TRUE)
}))

方法2:递归查找文件

直接在Variants目录下开启递归查找,自动遍历所有子目录找.tsv文件:

tsv_files <- list.files(
  path = paste0("./Unzipped/", input_files[1], "/Variants"),
  pattern = "tsv$",
  recursive = TRUE,
  full.names = TRUE
)

如果需要限定只找Variants下一级子目录里的文件,可以用正则过滤结果:

# 过滤路径,确保Variants后只有一级子目录
filtered_files <- tsv_files[grepl("./Unzipped/[^/]+/Variants/[^/]+/[^/]+\\.tsv$", tsv_files)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:18:15