並列処理に 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!
try() からのエラー キャッチのみが出力されます。ただし、foreach() %dopar% を使用しないと、両方のエラー メッセージが出力されます。では、両方のエラー メッセージを表示するにはどうすればよいでしょうか。上記の場合、警告がある場合、エラーに追加されるかどうかにかかわらず、警告メッセージは出力されません
test()
。test <- function(x) { if (x==2) warning("Warning!") }
では、警告を表示するにはどうすればよいでしょうか。
ps %dopar% 内で単に try(test(i)) を使用すると、「ネイティブ」エラー メッセージと警告が出力されることがわかりましたが、実際の状況では独自のエラー メッセージを含めたいと考えています。tryCatch()
の代わりに も使用してみtry()
ましたが、問題は解決しませんでした。
ありがとう!