关于读取文件并在R中使用tryCatch()

时间:2018-08-09 20:19:48

标签: r try-catch

我想要做的是读取输出文件并从文件中提取一些值。但是,实际上,某些文件不存在,因此我在程序中使用tryCatch()捕获那些“错误”,然后程序将返回NA值并继续读取下一个文件。但是,当我执行程序时,它报告错误(“所有连接都在使用中”),我试图在线查找答案,但是对于我的问题却没有好的答案。因此,如果您可以解决我的问题,请提出您的建议!非常感谢你 !

prop.protec <- 0.5
pat <- read.csv("~/par.csv",header = FALSE) # parameter file
pat <- as.matrix(pat)
tpw <- matrix(NA, nrow = 36, ncol = num.rep) # used to store p-values
num.rep <- 500

for (i in 1:36){
# following are 4 parameters
dis.mod <- pat[i,1]
herit.tot <- pat[i,2]
bin <- pat[i,3]
op <- pat[i,4]

for(reps in 1:num.rep){

tryCatch(
  {
    res.file <- paste("~/z-out-",op, "-", dis.mod, "-",bin,"-",herit.tot,"-",prop.protec,"-",reps, ".extended.qls.res", sep = "")
    res.dat <- read.table(file = res.file, header = TRUE)
    tpw[i,reps] <- res.dat$P_MFQLS
  },
   warning=function(cond) {
   message("Here's the original warning message:")
   message(cond)        
  },
  error = function(e){
   message("Here's the original error message:")
   message(e)} )
   }
  }

error message

1 个答案:

答案 0 :(得分:0)

我找到了答案,这是一个非常简单而美妙的答案,我们只需要在内循环的末尾添加closeAllConnections()。效果很好!我花了很多时间,当我知道这个答案并获得成功时,我相信你可以理解我的感受。