"Optimization failure"在 R 循环中



我有一个for循环,在这个循环中,我需要对参数I传递的不同值进行预测,当Holtwents预测中出现错误时,通常是优化失败,循环就会中断。我如何才能让我的代码跳过错误代码,转到下一个I并继续循环中的操作。例如,如果我运行下面的代码,当I=2时,循环将被错误中断:HoltWinters中的错误(TS[[i]](:优化失败

我需要的是,当发现错误时,它会自动移动到I=3并继续操作,而不是被中断,就像C++中的"继续"一样

有人能帮忙吗?

谢谢。

data <- list()
data[[1]] <- rnorm(36)
data[[2]] <-
c(
24,24,28,24,28,22,18,20,19,22,28,28,28,26,24,
20,24,20,18,17,21,21,21,28,26,32,26,22,20,20,
20,22,24,24,20,26
)
data[[3]] <- rnorm(36)
TS <- list()
Outputs <- list()
for (i in 1:3) {
TS[[i]] <- ts(data[[i]], start = 1, frequency = 12)
Function <- HoltWinters(TS[[i]])
TSpredict <- predict(Function, n.ahead = 1)[1]
Outputs[[i]] <-
data.frame(LastReal = TS[[i]][length(TS[[i]])], Forecast = TSpredict)
}

您可以使用tryCatch跳过带有错误的迭代。

for (i in 1:3) 
tryCatch({
TS[[i]] <- ts(data[[i]], start = 1, frequency = 12)
Function <- HoltWinters(TS[[i]])
TSpredict <- predict(Function, n.ahead = 1)[1]
Outputs[[i]] <-
data.frame(LastReal = TS[[i]][length(TS[[i]])], Forecast = TSpredict)
}, error=function(e){})

如果你想在失败的迭代中显示错误消息并运行整个代码,你可以使用:

for (i in 1:3) 
tryCatch({
TS[[i]] <- ts(data[[i]], start = 1, frequency = 12)
Function <- HoltWinters(TS[[i]])
TSpredict <- predict(Function, n.ahead = 1)[1]
Outputs[[i]] <-
data.frame(LastReal = TS[[i]][length(TS[[i]])], Forecast = TSpredict)
}, error=function(e){cat("ERROR :",conditionMessage(e), "n")})

相关内容

  • 没有找到相关文章

最新更新