【发布时间】:2017-01-08 19:28:49
【问题描述】:
我是使用 foreach() %dopar% 进行并行处理的新手,我对它如何处理错误或警告有一些问题。
-
当我在 foreach() %dopar% 中将 try() 与我的自定义错误消息一起使用时,“本机”错误消息不会显示:
test <- function(x) { if (x==2) "a"/2 } foreach(i=1:3) %dopar% { tryout <- try(test(i)) if (class(tryout)=="try-error") print("Error!") }在这种情况下,“本机”错误消息:
Error in "a"/2 : non-numeric argument to binary operator不会出现,只会打印来自 try() 错误捕获的Error!。然而,当不使用 foreach() %dopar% 时,两个错误信息都会被打印出来。那么如何让两个错误信息都显示出来呢? -
在上述情况下,当有警告时,无论是否附加错误,都不会打印警告消息,例如与上面相同的 foreach() 块和下面的
test():test <- function(x) { if (x==2) warning("Warning!") }那么如何显示警告呢?
附言我发现如果我只是在 %dopar% 中使用 try(test(i)) ,那么将打印“本机”错误消息和警告,但我确实想在现实生活中包含我自己的错误消息。我也试过用tryCatch()代替try(),但还是没有解决问题。
谢谢!
【问题讨论】:
-
您可能必须告诉并行后端您想要输出(例如,如果您使用的是
doSNOW,则为makeCluster的参数outfile="")。有一个related question 提供更多详细信息。 -
感谢您指出解决问题的宝贵方向。我现在没有使用 doSNOW,但我正在研究...
标签: r foreach error-handling warnings doparallel