2017-01-25 218 views
2
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)) 
} 

我想運行上面的代碼。但下面不顯示消息。如何在R中使用tryCatch?

Error in forecast(fit, h = 52) : object 'fit' not found

我的意圖是...... 如果在第一個函數(fit <- Arima(assetclass,order = c(2,0,2)))的錯誤,那麼,我想執行的第二功能(fit <- auto.arima(assetclass)

我應該怎麼辦?

+0

[如何寫的try-catch在R](http://stackoverflow.com/a/12195574/5977215) – SymbolixAU

回答

1

您的錯誤的直接原因是,下面一行是指fit變量,它不在範圍存在,它被引用:

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

一種選擇是隻具有在嘗試捕捉返回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)) 
} 
+0

謝謝。它運作良好。好! –