如何在执行并行循环时忽略R tryCatch中的警告

时间:2017-04-28 15:34:13

标签: r foreach try-catch warnings doparallel

我正在R中构建Arima模型。我正在尝试使用tryCatch来处理模型训练中的异常 - 特别是在我没有足够数据来构建模型的情况下。由于我有很多训练过的模型(大约380个),我试图用R中的doParallel包来实现它。 但我注意到有一些警告我只需要忽略。以下是我的尝试。但我可以看到一些线程被卡住了。我只是想知道警告处理代码是否将线程置于无限循环中,因为我试图在警告中调用相同的表达式。

>>> a = "b"
>>> a in ["a", "b"]
True

请注意,首先我尝试了4次循环迭代,第一次运行得非常快,但其他3次迭代都在运行。

1 个答案:

答案 0 :(得分:1)

您想忽略警告,但在suppressWarning

中打印警告
...
warning=function(w)
{ 
print(w) 
suppressWarnings ( 
...

您没有提供可重现的示例,但我会尝试从一组最小的行开始:

...
nCores <- detectCores()
registerDoParallel(cores = nCores)
source("models.R")

modeling <- function(y_data) {
  tryCatch({
    suppressWarnings(out <- model(data=y_data))
    })
}

foreach(os=ops) %:% foreach(country=countries) %:% foreach(app=apps) %dopar% {
  modeling(y_data)
}