我正在 R 中构建一个 Arima 模型。我正在尝试使用 tryCatch 来处理模型训练中的异常——特别是在我没有足够数据来构建模型的情况下。由于我训练了很多模型(大约 380 个),我尝试使用 R 中的 doParallel 包来实现这个。但我注意到有些警告我只需要忽略。下面给出的是我尝试过的。但我可以看到一些线程只是卡住了。我只是想知道警告处理代码是否将线程置于无限循环中,因为我尝试在警告中调用相同的表达式。
#some sample data
ops <- ['Android', 'iOS']
country <- ['US', 'CA']
apps <- ['A', 'B', 'C']
nCores <- detectCores()
registerDoParallel(cores = nCores)
foreach(os=ops)%:% foreach(country=countries) %:% foreach(app=apps)%dopar%{
modeling <- function(y_data)
{
#the function model is implemented inside the models.R #source file
#it basically uses auto.arima with some fourier regressors
#and returns to model
source("models.R")
#for each condition get data as y_data
tryCatch(
{
suppressWarnings (
out <- model(data=y_data)
)
},
warning=function(w)
{
print(w)
suppressWarnings (
out <- model(data=y_data)
)
},
error=function(e) {
print(e)
return(NULL) }
write.table(out$AICC, "results.csv")
}
modeling(y_data)
}
请注意,首先我只尝试了 4 次循环迭代,第一次运行得非常快,但其他 3 次迭代一直在运行。