我正在使用" trycatch"跳过R中的循环中的一些错误,我想在if语句中使用错误消息,但我不知道如何做到这一点。我想在没有错误的情况下增加一个计数器,因为" trycatch"正确跳过错误,但也增加计数器。如果您想看到它,这是我的代码:
n=1000
j=0
true.out<-matrix(0,nrow=1000,ncol=500)
ident.out<-matrix(0,nrow=1000,ncol=500)
for(i in 1:n )
{tryCatch({
serie<-gen_3_out_garch(500,0.0126,0.0757,0.9122,3,i,i,info=F,plot=T)
info<-gen_3_out_garch(500,0.0126,0.0757,0.9122,3,i,i,info=T,plot=F)
A<-Ric_Doornik_Ooms(serie)
out_presenti<-info$"caratteristiche outliers"[,1]
out_rilevati<-as.numeric(A[,1])
true.out[j,out_presenti]<-1
ident.out[j,out_rilevati]<-2
}, error=function(e){print(paste("error in rugarch"))
})
}
但我唯一想知道的是如何编写类似的内容:
if("there are no errors")
{j=j+1)
谢谢你的帮助
答案 0 :(得分:0)
试
loadError=F
a=try({...})
loadError <- (is(a, 'try-error')|is(a,'error'))
if(loadError==F){
j=j+1
}
答案 1 :(得分:0)
您可以在出错时返回FALSE并针对tryCatch
for(i in 1:n ) {
test <- tryCatch({
serie <- gen_3_out_garch(500,0.0126,0.0757,0.9122,3,i,i,info=F,plot=T)
info <- gen_3_out_garch(500,0.0126,0.0757,0.9122,3,i,i,info=T,plot=F)
A <- Ric_Doornik_Ooms(serie)
out_presenti <- info$"caratteristiche outliers"[,1]
out_rilevati <- as.numeric(A[,1])
true.out[j,out_presenti] <- 1
ident.out[j,out_rilevati] <- 2
TRUE
}, error=function(e){
print(paste("error in rugarch"))
FALSE
})
if (!test) j <- j+1
}
或者你可以从错误函数
增加jtryCatch({
...
}, error=function(e) j <<- j+1 )