如何在R中使用tryCatch?

时间:2017-01-25 05:18:11

标签: r

for(i in 2:num_asset){
  assetclass <- ts(mydt[,i])
  tryCatch(
    {
      fit <- Arima(assetclass,order = c(2,0,2))
    },
    error = function(e){
      fit <- auto.arima(assetclass)
      k=i
    }
  )
  fst <-as.data.frame(forecast(fit, h=52))
}

我想在上面运行代码。但它不会在下面显示消息。

  

预测错误(fit,h = 52):object&#39; fit&#39;找不到

我的意图是...... 如果第一个函数(fit <- Arima(assetclass,order = c(2,0,2)))出错,那么我想要运行第二个函数(fit <- auto.arima(assetclass)

我该怎么办?

1 个答案:

答案 0 :(得分:1)

错误的直接原因是以下行引用了fit变量,该变量在引用它的范围内不存在:

fst <- as.data.frame(forecast(fit, h=52))

一种选择是让try catch返回fit的值,无论它是基于成功还是错误:

for (i in 2:num_asset) {
    assetclass <- ts(mydt[,i])
    fit <- tryCatch({
        return(Arima(assetclass,order = c(2,0,2)))

    }, error = function(e) {
        k=i
        return(auto.arima(assetclass))
    })

    fst <- as.data.frame(forecast(fit, h=52))
}