我是使用 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
不会显示,并且只会Error!
打印 from try() 错误捕获。然而,当不使用 foreach() %dopar% 时,两个错误信息都会被打印出来。那么如何让两个错误信息都显示出来呢?在上述情况下,当有警告时,无论是否附加错误,都不会打印警告消息,例如使用与上面和
test()
下面相同的 foreach() 块:test <- function(x) { if (x==2) warning("Warning!") }
那么如何显示警告呢?
ps 我发现如果我只是在 %dopar% 中使用 try(test(i)) ,那么将打印“本机”错误消息和警告,但我确实想在现实生活中包含我自己的错误消息。我也尝试过使用tryCatch()
而不是try()
,但它并没有解决问题。
谢谢!