2017-07-10 7 views
1

Rstudioのデバッガは、崩壊する機能には非常に優れています。私はエラーをスローしないが、スローダウンを引き起こしていると信じている何千もの警告をスローする非常に長い関数を使って作業しています。私はこれらの警告の原因を見つけたいと思います。エラーのない関数でデバッガを実行するには?

デバッガで関数を実行し、引数のデフォルト、環境などを使用して関数にステップインして実行する方法はありますか?match.callなどの関数を使用して自動的に生成されます?

+0

Uは、エラーを見つけるために関数の一部をチェックするためにメソッドを使用することができます – moh89

答えて

3

あなたのファンクションにジャンプして、行を実行して環境を調べることができるようにするには、どこにでも置いてください。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 
2

使用することもできdebugまたはdebugonce (デバッグ用に1回のみ)。ちょうどdebug(yourFunctionName)

完了した後にundebugを忘れないようにしてください。

browserは、デバッグモードが開始されるポイントを変更できるので、あなたにとって良い選択だと思います。

+0

これは、手動でブレークポイントを配置し、それらを削除することを忘れないようにしたい場合にお勧めです。一度だけデバッグする場合は、初めてデバッグ用のものを削除する便利な 'debugonce'関数がありますので、' undebug'を覚える必要はありません。 – Dason

+1

@Dasonアドオンのおかげで – NpT

関連する問題