[解決済み] Rでのデバッグのための一般的な提案
2022-08-07 15:18:08
質問
自分が書いたRの関数を使うとエラーが発生します。
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: algorithm did not converge
私がしてきたこと
- 関数をステップ実行する
-
エラーが発生した行を見つけるためにprintを追加すると、2つの関数が使われるべきではないことを示唆しています。
glm.fit
. それらはwindow()
とsave()
.
私の一般的なアプローチとしては
print
と
stop
コマンドを使用し、例外を見つけることができるまで関数を一行ずつ見ていきます。
しかし、これらのテクニックを使用しても、このエラーがコードのどこに由来しているのか、私には明らかではありません。コード内のどの関数が
glm.fit
. この問題を診断するにはどうしたらよいでしょうか。
どのように解決するのですか?
デバッグは芸術の一形態であり、明確な特効薬はないと言っていいでしょう。 どんな言語にもデバッグのための良い戦略があり、それはここでも適用されます (例. この素晴らしい記事を読む ). 例えば、最初にすることは 問題を再現する ...それができない場合は、より多くの情報を得る必要があります (たとえば、ログを取るなど)。 再現できたら、次のことが必要です。 を減らす をソースに還元する必要があります。
トリックというよりは、お気に入りのデバッグルーチンがあるといったほうがいいかもしれません。
-
エラーが発生したとき、私が通常行う最初のことは、スタック トレースを見るために
traceback()
を呼び出してスタックトレースを見ます。これはエラーが発生した場所を示してくれるので、いくつかのネストした関数がある場合に特に便利です。 -
次に、私は
options(error=recover)
これはすぐにエラーが発生したブラウザモードに切り替わるので、そこからワークスペースをブラウズすることができます。 -
それでもまだ十分な情報がない場合、私は通常
debug()
関数を使用して、スクリプトを一行ずつ見ていきます。
R 2.10での最高の新しいトリックは、(スクリプトファイルを扱うときに)
findLineNum()
と
setBreakpoint()
という関数があります。
最後のコメントとして、エラーに応じて
try()
または
tryCatch()
ステートメントを外部関数呼び出しの周りに追加します(特にS4クラスを扱う場合)。 これは、時にはさらに多くの情報を提供し、また、実行時にエラーがどのように処理されるかをよりコントロールできるようになります。
これらの関連する質問には、多くの提案があります。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
R - ユークリッド距離の計算を簡単にする方法
-
データボックス内の行/列の削除/追加を行うR言語
-
[解決済み] Rでデータフレームに行を追加する方法は?
-
[解決済み] パッケージ 'xxx' は利用できません (for R version x.y.z) 」という警告にどのように対処したらよいですか?
-
[解決済み] 関数のソースコードを見るにはどうしたらいいですか?
-
[解決済み] リストやデータフレームの要素にアクセスするためのブラケット[ ]とダブルブラケット[[ ]]の違いについて
-
[解決済み] Visual Studioでコマンドラインパラメータを使ったデバッグを行う
-
[解決済み】私のggplot2構文が賢明であるときに、R CMDチェック「no visible binding for global variable」注記を処理するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
R: hclust(d, method = method)でのエラー : 外部関数呼び出しは NA/NaN/Inf(arg10) を持つことができません。
-
R: 環境と変数のスコープ問題
-
R plot.new() のエラー : 図形の余白が大きすぎる
-
[R] is.data.frame(x) のエラー : (リスト) オブジェクトを 'double' 型に強制できない。
-
R言語における共通関数
-
[解決済み] Rの二乗偏差の総和の算出
-
[解決済み] 情報を損なわずに因数を整数値に変換するには?
-
[解決済み] Rでtrycatchの書き方
-
[解決済み] ベクトル中のある要素のインデックスを求めるR関数はありますか?
-
[解決済み] Rでオブジェクト(変数)が定義されているかどうかを確認するには?