子功能

必须在该函数内定义函数内调用的函数(即子函数),以访问本地环境中定义的任何变量而不传递。

这失败了:

bar <- function() {
    z <- x + y
    return(z)
}
    
foo <- function() {
    y <- 3
    z <- bar()
    return(z)
}

foo()

bar() 出错:找不到对象’y'

这有效:

foo <- function() {
    
    bar <- function() {
        z <- x + y
        return(z)
    }
    
    y <- 3
    z <- bar()
    return(z)
}
    
foo()

4