使用循环和 if else 语句有条件地处理(bgzip、tabix)文件
Conditionally process (bgzip, tabix) files using loop and if else statement
我有一些 .vcf
文件。我已从我的目录中选择了这些文件,并希望将它们转换为其他两种格式。
我在这里使用 if
和 else if
有点困惑。我想这样做:如果第 [i]
个 .vcf
文件没有 .bgz
文件,我想将其转换为 .bgz
文件并保留原始文件。
如果已经有 .bgz
文件,但第 [i]
个 .bgz
文件没有 .bgz.tbi
文件,那么我想将 .bgz
文件转换为.bgz.tbi
文件保留了我从 .vcf
文件中获得的原始 .bgz
。
有人可以帮我完成这个循环吗?它适用于 if 条件,但不知道如何从那里开始。
path.file<-"/mypath/for/files/"
all.files <- list.files("/mypath/for/files")
all.files <- all.files[grepl(".vcf$",all.files)]
for (i in 1:length(all.files)){
if(!exists(paste0(all.files[i],".bgz"))){
bgzip(paste0(path.file,all.files[i]), overwrite=FALSE)
}else{(!exists(paste0(all.files[i],".bgz",".tbi"))){
#if(!exists(paste0(all.files[i],".bgz",".tbi"))){
indexTabix(paste0(paste0(path.file,all.files[i]),".bgz"), format="vcf")
}
}
试试这个(未测试):
#get VCF files with path
all.files <- list.files("/mypath/for/files", pattern = "*.vcf$",
full.names = TRUE)
for (i in all.files) {
#make output names, so we don't mess about with paste
file_bgz <- paste0(i, ".bgz")
file_bgz_tbi <- paste0(i, ".bgz.tbi")
#if bgz exists don't zip else zip
if(!exists(file_bgz))
bgzip(i, paste0(i, ".bgz"))
#if tbi exists don't index else tabix
if(!exists(file_bgz_tbi))
indexTabix(file_bgz, format = "vcf")
}
我有一些 .vcf
文件。我已从我的目录中选择了这些文件,并希望将它们转换为其他两种格式。
我在这里使用 if
和 else if
有点困惑。我想这样做:如果第 [i]
个 .vcf
文件没有 .bgz
文件,我想将其转换为 .bgz
文件并保留原始文件。
如果已经有 .bgz
文件,但第 [i]
个 .bgz
文件没有 .bgz.tbi
文件,那么我想将 .bgz
文件转换为.bgz.tbi
文件保留了我从 .vcf
文件中获得的原始 .bgz
。
有人可以帮我完成这个循环吗?它适用于 if 条件,但不知道如何从那里开始。
path.file<-"/mypath/for/files/"
all.files <- list.files("/mypath/for/files")
all.files <- all.files[grepl(".vcf$",all.files)]
for (i in 1:length(all.files)){
if(!exists(paste0(all.files[i],".bgz"))){
bgzip(paste0(path.file,all.files[i]), overwrite=FALSE)
}else{(!exists(paste0(all.files[i],".bgz",".tbi"))){
#if(!exists(paste0(all.files[i],".bgz",".tbi"))){
indexTabix(paste0(paste0(path.file,all.files[i]),".bgz"), format="vcf")
}
}
试试这个(未测试):
#get VCF files with path
all.files <- list.files("/mypath/for/files", pattern = "*.vcf$",
full.names = TRUE)
for (i in all.files) {
#make output names, so we don't mess about with paste
file_bgz <- paste0(i, ".bgz")
file_bgz_tbi <- paste0(i, ".bgz.tbi")
#if bgz exists don't zip else zip
if(!exists(file_bgz))
bgzip(i, paste0(i, ".bgz"))
#if tbi exists don't index else tabix
if(!exists(file_bgz_tbi))
indexTabix(file_bgz, format = "vcf")
}