Я новичок в использовании foreach() %dopar% для распараллеливания, и у меня есть некоторые проблемы с обработкой ошибок или предупреждений.
когда я использую try() с моим настроенным сообщением об ошибке в foreach() %dopar%, "собственное" сообщение об ошибке не отображается:
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!
из отлова ошибок try(). Однако оба сообщения об ошибках будут напечатаны, если не использовать foreach() %dopar%. Итак, как сделать так, чтобы отображались оба сообщения об ошибках?В приведенном выше случае, когда есть предупреждения, независимо от того, являются ли они дополнительными к ошибкам или нет, предупреждающие сообщения не печатаются, например, с тем же блоком foreach(), что и выше, и
test()
ниже:test <- function(x) { if (x==2) warning("Warning!") }
Итак, как показать предупреждения?
p.s. Я обнаружил, что если я просто использую try(test(i)) внутри %dopar%, то будут напечатаны «собственные» сообщения об ошибках и предупреждения, но я хочу включить свое собственное сообщение об ошибке в реальных ситуациях. Я также пытался использовать tryCatch()
вместо try()
, но это не решило проблему.
Спасибо!
outfile=""
изmakeCluster
, если вы используетеdoSNOW
). Существует связанный вопрос с более подробной информацией. - person Tomas Kalibera   schedule 01.09.2016