18

R でシミュレーション スタディを実行しています。時折、シミュレーション スタディでエラー メッセージが表示されます。シミュレーション スタディを関数に実装したため、このエラー メッセージが表示されるとシミュレーションが停止します。エラーを抑制するのは悪い習慣であることはわかっていますが、現時点では、エラーを抑制してから、実行したいシミュレーションの総数まで次のシミュレーションを続行する以外に選択肢はありません。これを行うには、R が生成するエラー メッセージを抑制する必要があります。

これを行うために、私はさまざまなことを試しました:

library(base64)
suppressWarnings
suppressMessages
options(error = expression(NULL))

最初の 2 つのオプションでは、警告とメッセージのみが抑制されるため、これは役に立ちません。私が正しく理解している場合、最後のケースでは、すべてのエラー メッセージを回避する必要があります。ただし、これは役に立ちません。関数は依然としてエラー メッセージで停止します。

これが私が期待するように機能しない理由を誰かが知っていますか? インターネットで解決策を検索しましたが、上記の方法しか見つかりませんでした。シミュレーションを実行している関数では、コードの一部が外部プログラム JAGS (ギブス サンプラー) によって分析され、この分析によってエラー メッセージが生成されます。ここがまずいのではないでしょうか?

他のエラー メッセージは生成されないため、特定の/特定のエラー メッセージを抑制する必要はないことに注意してください。すべてのエラー メッセージだけを抑制するオプションがあれば十分です。

お時間をいただきありがとうございます。

4

2 に答える 2

7

メッセージの抑制とエラーへの応答の抑制には大きな違いがあります。関数がそのタスクを完了できない場合、必然的にエラーが返されます (ただし、一部の関数には、エラーの場合に他のアクションを実行するためのコマンドライン引数があります)。Zoonekind が示唆したように、関数が失敗した場合でもメイン プログラム フローを続行できるように、エラーを使用tryまたはtrycatch「カプセル化」する必要があります。

于 2013-10-01T11:12:07.963 に答える