我有一个名为wanted.bam
的对象,其中包含我的三个目录path1,path2,path3
中所有.bam(是扩展名)文件的有用文件名列表。我循环遍历所有这些目录以搜索所需的文件。我想要做的是通过遍历每个目录并在每个文件中实现FUNCTION
来查找所需文件。此循环适用于第一个目录中的所有匹配文件,但随着它进展到另一个目录,它会中断给出错误:
Error in value[[3L]](cond) :
failed to open BamFile: file(s) do not exist:
'sort.bam'
我的代码:
bam.dir<- c("path1","path2","path3")
for (j in 1:length(bam.dir)){
all.bam.files <- list.files(bam.dir[j])
all.bam.files <- grep(wanted.names, all.bam.files, value=TRUE)
print(paste("The wanted number of bam files in this directory:", (length(all.bam.files))))
if(length(all.bam.files)==0){
next
}else{
setwd(bam.dir[j])
}
print(paste("The working directory number:",j,":",(getwd())))
## ****using another loop here for each file to implement a function*****
all.FAD<- {}
for(i in 1:length(all.bam.files)){
output<- FUNCTION(all.bam.files[i])
}
}
答案 0 :(得分:4)
您可能不希望像这样更改工作目录。而是使用list.files
,full.names=TRUE
中的选项返回文件的完整路径。然后,您可以在完整路径名上使用read.csv
或其他任何内容,而无需更改目录。您的代码失败,因为在设置目录后,将更改下一个目录的相对路径。
如果要继续更改目录,只需确保在循环结束时将目录设置回基目录。