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)
)
我该怎么办?
答案 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))
}