エラーが発生したときに R スクリプトの行番号を取得するにはどうすればよいでしょうか? 質問する

エラーが発生したときに R スクリプトの行番号を取得するにはどうすればよいでしょうか? 質問する

コマンドラインから長い R スクリプトを実行している場合 ( R --slave script.R)、エラーが発生したときに行番号を表示するにはどうすればよいでしょうか?

可能であれば、スクリプトにデバッグ コマンドを追加したくありません。R が他のほとんどのスクリプト言語と同じように動作することを望んでいます。

ベストアンサー1

これによって行番号は表示されませんが、コールスタックのどこで失敗が発生したかがわかるので非常に役立ちます。

traceback()

[編集:]コマンドラインからスクリプトを実行する場合は、1つまたは2つの呼び出しをスキップする必要があります。対話型および非対話型の R セッションの traceback()

通常のデバッグの疑いなしにこれを行う別の方法は知りません:

  1. デバッグ()
  2. ブラウザ()
  3. options(error=recover) [元に戻すには options(error = NULL) を続ける]

こちらの関連​​投稿をご覧になってみてはいかがでしょうか。

[編集:]申し訳ありません...コマンドラインからこれを実行していることがわかりました。その場合は、options(error) 機能を使用することをお勧めします。簡単な例を以下に示します。

options(error = quote({dump.frames(to.file=TRUE); q()}))

エラー状態に対しては、必要なだけ複雑なスクリプトを作成できるため、デバッグに必要な情報を決定するだけで済みます。

それ以外の場合、懸念される特定の領域(データベースへの接続など)がある場合は、それらを tryCatch() 関数でラップします。

おすすめ記事