使用瀏覽器

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