使用浏览器
browser
函数可以像断点一样使用:代码执行将在调用它时暂停。然后,用户可以检查变量值,执行任意 R 代码并逐行逐步执行代码。
一旦在代码中命中了 browser()
,交互式解释器就会启动。任何 R 代码都可以正常运行,此外还有以下命令,
命令 | 含义 |
---|---|
C |
退出浏览器并继续程序 |
F |
完成电流回路或功能 |
ñ | 跳过(评估下一个语句,逐步调用函数调用) |
小号 | Step Into(评估下一个语句,进入函数调用) |
哪里 | 打印堆栈跟踪 |
[R | 调用 resume 重启 |
Q |
退出浏览器并退出 |
例如,我们可能有一个类似的脚本,
toDebug <- function() {
a = 1
b = 2
browser()
for(i in 1:100) {
a = a * b
}
}
toDebug()
运行上面的脚本时,我们最初会看到类似的东西,
Called from: toDebug
Browser[1]>
然后,我们可以与提示进行交互,
Called from: toDebug
Browser[1]> a
[1] 1
Browser[1]> b
[1] 2
Browse[1]> n
debug at #7: for (i in 1:100) {
a = a * b
}
Browse[2]> n
debug at #8: a = a * b
Browse[2]> a
[1] 1
Browse[2]> n
debug at #8: a = a * b
Browse[2]> a
[1] 2
Browse[2]> Q
browser()
也可以用作功能链的一部分,如下所示:
mtcars %>% group_by(cyl) %>% {browser()}