Rstudioのデバッガは、崩壊する機能には非常に優れています。私はエラーをスローしないが、スローダウンを引き起こしていると信じている何千もの警告をスローする非常に長い関数を使って作業しています。私はこれらの警告の原因を見つけたいと思います。エラーのない関数でデバッガを実行するには?
デバッガで関数を実行し、引数のデフォルト、環境などを使用して関数にステップインして実行する方法はありますか?match.call
などの関数を使用して自動的に生成されます?
Rstudioのデバッガは、崩壊する機能には非常に優れています。私はエラーをスローしないが、スローダウンを引き起こしていると信じている何千もの警告をスローする非常に長い関数を使って作業しています。私はこれらの警告の原因を見つけたいと思います。エラーのない関数でデバッガを実行するには?
デバッガで関数を実行し、引数のデフォルト、環境などを使用して関数にステップインして実行する方法はありますか?match.call
などの関数を使用して自動的に生成されます?
あなたのファンクションにジャンプして、行を実行して環境を調べることができるようにするには、どこにでも置いてください。browser()
それを使用するためのショートカット
は、対応するヘルプページで見つけることができ?browser
1は、ブラウザを使用する方法の小さな偽の例セッション...
> z <- 4
>
> foo <- function(){
+ x <- 2
+ browser()
+ y <- 3
+ answer <- x+z
+ return(answer)
+ }
> foo()
Called from: foo()
Browse[1]> ls() # we can use ls() to see what is defined
[1] "x"
Browse[1]> x # we can then examine what is stored in the variables
[1] 2
Browse[1]> n # n tells it to run the next line
debug at #4: y <- 3
Browse[2]> n
debug at #5: answer <- x + z
Browse[2]> y
[1] 3
Browse[2]> ls()
[1] "x" "y"
Browse[2]> n
debug at #6: return(answer)
Browse[2]> ls()
[1] "answer" "x" "y"
Browse[2]> answer
[1] 6
Browse[2]> x+y
[1] 5
Browse[2]> # oh I defined answer with z instead of y
Browse[2]> # let's go change the function
Browse[2]> Q # exit the browser
使用することもできdebug
またはdebugonce
(デバッグ用に1回のみ)。ちょうどdebug(yourFunctionName)
。
完了した後にundebug
を忘れないようにしてください。
browser
は、デバッグモードが開始されるポイントを変更できるので、あなたにとって良い選択だと思います。
Uは、エラーを見つけるために関数の一部をチェックするためにメソッドを使用することができます – moh89