R使用浏览器

示例

该browser函数可以像断点一样使用:代码执行将在调用点处暂停。然后,用户可以检查变量值,执行任意R代码,并逐行逐步执行该代码。

一旦browser()在代码中命中,交互式解释器将启动。任何R代码都可以正常运行,此外还存在以下命令,

命令含义
C退出浏览器并继续程序
F完成电流回路或功能
ñ单步执行(评估下一条语句,单步执行函数调用)
s进入(评估下一条语句,进入函数调用)
哪里打印堆栈跟踪
[R调用“恢复”重启
退出浏览器并退出

例如,我们可能有一个脚本,

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()}