7

並列処理に foreach() %dopar% を使用するのは初めてで、エラーや警告の処理方法についていくつか問題があります。

  1. 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% を使用しないと、両方のエラー メッセージが出力されます。では、両方のエラー メッセージを表示するにはどうすればよいでしょうか。

  2. 上記の場合、警告がある場合、エラーに追加されるかどうかにかかわらず、警告メッセージは出力されませんtest()

    test <- function(x) {
      if (x==2) warning("Warning!")
    }
    

    では、警告を表示するにはどうすればよいでしょうか。

ps %dopar% 内で単に try(test(i)) を使用すると、「ネイティブ」エラー メッセージと警告が出力されることがわかりましたが、実際の状況では独自のエラー メッセージを含めたいと考えています。tryCatch()の代わりに も使用してみtry()ましたが、問題は解決しませんでした。

ありがとう!

4

1 に答える 1