当前位置: 首页 > 知识库问答 >
问题:

如何在R中使用tryCatch?[副本]

壤驷俊逸
2023-03-14
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))
}

我想在上面运行代码。但在下面显示消息不起作用。

预测错误(拟合,h=52):未找到对象“拟合”

我的意图是...如果第一个函数有错误(fit

我该怎么办?


共有1个答案

钱飞翼
2023-03-14

导致错误的直接原因是以下行引用的是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))
}
 类似资料: