我想要做的是读取输出文件并从文件中提取一些值。但是,实际上,某些文件不存在,因此我在程序中使用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)} )
}
}
答案 0 :(得分:0)
我找到了答案,这是一个非常简单而美妙的答案,我们只需要在内循环的末尾添加closeAllConnections()
。效果很好!我花了很多时间,当我知道这个答案并获得成功时,我相信你可以理解我的感受。