Rstudio的调试器非常适合分崩离析的功能。我正在使用一个非常长的函数,它不会抛出错误但会抛出成千上万的警告,我认为这些警告会导致速度减慢。我想找到这些警告的来源。
有没有办法运行一个带调试器的函数进入函数并使用所有参数默认值,环境等逐行运行,这些函数使用像{{1}这样的函数在函数中自动生成等等?
答案 0 :(得分:3)
将browser()
放在您想要跳转到您的函数的任何位置,并逐行执行,并具有检查环境的能力。
可以在相应的帮助页面?browser
关于如何使用浏览器的小型虚假示例会话......
> 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
答案 1 :(得分:2)
您还可以使用debug
或debugonce
(仅用于调试一次)。只需debug(yourFunctionName)
。
完成后不要忘记undebug
。
我相信browser
对你来说是个不错的选择,因为你可以改变调试模式开始的点。