如何在R中将错误用作if语句

时间:2015-07-02 14:34:16

标签: r

我正在使用" 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)

谢谢你的帮助

2 个答案:

答案 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
}

或者你可以从错误函数

增加j
tryCatch({
   ...
}, error=function(e) j <<- j+1 )