I'm new to using foreach() %dopar% for paralleling, and I have some problems about how it handles errors or warnings.
when I use try() with my customized error message within foreach() %dopar%, the "native" error message doesn't show up:
test <- function(x) { if (x==2) "a"/2 } foreach(i=1:3) %dopar% { tryout <- try(test(i)) if (class(tryout)=="try-error") print("Error!") }
In this case the "native" error message:
Error in "a"/2 : non-numeric argument to binary operator
doesn't show up, and only theError!
from try() error catching will be printed. However both error messages will be printed when not using foreach() %dopar%. So how to make both error messages show up?In the above case, when there are warnings, whether additional to errors or not, the warning messages are not printed, for example with the same foreach() block as above and the
test()
below:test <- function(x) { if (x==2) warning("Warning!") }
So how to show the warnings?
p.s. I found that if I simply use try(test(i)) within %dopar% then the "native" error messages and the warnings will be printed, but I do want to include my own error message in real-life situations. I also tried using tryCatch()
instead of try()
, but it didn't solve the problem.
Thanks!
outfile=""
ofmakeCluster
if you are usingdoSNOW
). There is a related question with more details. – Plumcot