R语言如何遍历子文件夹批量生成所有Aligned.bam文件路径?
R生成子目录下所有Aligned.bam完整路径的实现方法
基于你现有代码的修改方案
你已经获取了所有子文件夹路径,直接用R内置的file.path()函数拼接路径即可,该函数会自动适配不同操作系统的路径分隔符,避免手动写斜杠带来的兼容问题:
parent.folder <- '/N/slate/ATACseq' subfolders <- list.dirs(parent.folder, recursive=TRUE)[-1] # 拼接得到所有bam文件完整路径 bam_paths <- file.path(subfolders, "Aligned.bam")
更简便的一步实现方案
不用提前提取子文件夹,直接用list.files()函数匹配目标文件,一步得到完整路径:
parent.folder <- '/N/slate/ATACseq' bam_paths <- list.files( path = parent.folder, pattern = "^Aligned\\.bam$", recursive = TRUE, full.names = TRUE )
参数说明:
pattern = "^Aligned\\.bam$":严格匹配文件名为Aligned.bam,避免匹配到名称相似的其他文件recursive = TRUE:自动遍历所有层级的子目录full.names = TRUE:直接返回文件的完整绝对路径,无需额外拼接
可选校验步骤
可以加一行代码验证所有生成的路径都有效,避免后续循环读取时报错:
# 校验所有文件是否存在 all(file.exists(bam_paths)) # 如果返回FALSE,可以用以下代码定位缺失文件的位置 which(!file.exists(bam_paths))
内容的提问来源于stack exchange,提问作者Fengdi Zhao
相关产品推荐
相关产品推荐

