1

私はいくつかの.vcfファイルを持っています。ディレクトリからこれらのファイルを選択し、それらを他の 2 つの形式に変換したいと考えています。

ifここでandを使用するのは少し混乱してelse ifいます。私はこのようにしたい:.bgzファイルのファイルがない場合、元のファイルを保持した[i]ままファイル.vcfに変換したい.bgz

既にファイルがあり、ファイルのファイル.bgzがない場合は、ファイルから取得したオリジナルを保持してファイルをファイルに変換したいと考えて います。.bgz.tbi[i].bgz.bgz.bgz.tbi.bgz.vcf

誰かがこのループを終わらせるのを手伝ってくれませんか? 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")
  }
 }
4

1 に答える 1

3

これを試してください(テストされていません):

#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")
  }
于 2016-04-21T11:35:00.857 に答える