调试R闭包

问题描述 投票:1回答:1

debug一个函数foo在文件foo.R

foo <- function() {
    a <- c(2, 3)
}

一个人可以写一个“驱动程序”文件

source("foo.R")
debug(f)
f()

对于同一范围内的许多此类功能,这可以简单地进行扩展。

bar()体内调试函数foo有点单调乏味

foo <- function() {
    bar <- function() {
        a <- c(2, 3)
    }
    bar()
}

一个可以从相同的驱动程序文件(实际上是一个测试文件)开始,加载bar()而不实际运行它,在调试提示符下键入debug(bar),然后运行bar()。我想知道是否有更好的方法可以进行多次关闭。

有没有办法在驱动程序/测试文件中指定我想要调试内部函数bar,这是debug(foo::bar)的行?

R是否提供标准语法来引用内部函数(也就是嵌套函数,也就是闭包等)?

相关问题:

r debugging nested-function
1个回答
0
投票

您可以将browser()放在您想要调用器的位置:

foo <- function() {
    print("In foo")
    bar()
    return(NULL)
}

bar <- function() {
    print("In bar")
    dash()
    return(NULL)
}

dash <- function() {
    print("In dash")
    browser()
    return(NULL)
}

foo()
© www.soinside.com 2019 - 2024. All rights reserved.