R语言list.files仅返回部分fastq文件,下游分析受影响求助
16S测序fastq文件分析问题:list.files异常与排序解决方案
一、list.files默认返回部分文件的原因
list.files()默认参数all.files = FALSE,会过滤掉以.开头的隐藏文件。你用all.files=TRUE能看到全部204个文件,说明剩下的171个未显示的文件都是隐藏文件(文件名首字符是.)。
二、匹配R1/R2文件仅识别部分的原因
默认情况下list.files()的pattern参数只在非隐藏文件里匹配,那些隐藏的目标fastq文件(比如.CF8_S7_L001_R1_001.fastq.gz)不会被扫描到,所以匹配不到。
三、解决步骤
显示全部文件
调用list.files()时加上all.files = TRUE参数:all_files <- list.files(path_1, all.files = TRUE)匹配所有R1/R2文件
在匹配模式时同样开启all.files = TRUE,确保隐藏文件被纳入扫描范围:Fs_1 <- list.files(path_1, pattern = "_R1_001.fastq.gz", full.names = TRUE, all.files = TRUE) Rs_1 <- list.files(path_1, pattern = "_R2_001.fastq.gz", full.names = TRUE, all.files = TRUE)按样本编号自然排序
默认的sort()是字符排序,会出现CF10排在CF8前面的情况(因为字符比较中1比8小)。如果需要按样本数字顺序(8→10)排序,用gtools包的mixedsort()函数:# 未安装gtools的话先执行安装 install.packages("gtools") library(gtools) Fs_1_sorted <- mixedsort(Fs_1) Rs_1_sorted <- mixedsort(Rs_1)
这样就能获取全部符合条件的文件,并按样本编号的自然顺序排列,满足后续分析需求。
内容的提问来源于stack exchange,提问作者Laeanna
相关产品推荐
相关产品推荐

