R 如何让助手函数从主函数继承变量
我想设置一个函数R 如何让助手函数从主函数继承变量,r,function,environment,scoping,R,Function,Environment,Scoping,我想设置一个函数bar(),它依赖于助手函数foo()。我正在努力找出最干净的方法来设置变量定义,这样我就不必重复foo()和bar()中的定义 这似乎应该起作用,但没有: # helper function foo <- function() { (a + b)/(c - d) } # main function bar <- function(a, b, c, d) { z <- foo() z * 3 } bar(a = 1, b = 2, c = 3, d =
bar()
,它依赖于助手函数foo()
。我正在努力找出最干净的方法来设置变量定义,这样我就不必重复foo()
和bar()
中的定义
这似乎应该起作用,但没有:
# helper function
foo <- function() {
(a + b)/(c - d)
}
# main function
bar <- function(a, b, c, d) {
z <- foo()
z * 3
}
bar(a = 1, b = 2, c = 3, d = 4)
#辅助函数
foo如果在bar
中定义foo
,则foo()
将在定义它的环境中查找a
、b
、c
和d
bar <- function(a, b, c, d) {
foo <- function() {
(a + b)/(c - d)
}
z <- foo()
z * 3
}
您可以在此处阅读更多信息:
“…查看当前函数的内部,然后查看该函数的定义位置,依此类推,一直到全局环境,然后再查看其他加载的包。”方法是将值作为参数传递,或者通过在值上定义闭包,如markus的回答所示。传递相关参数并不是真正的“重复”,或者至少不是一种糟糕的方式。
a <- 1
b <- 2
c <- 3
d <- 4
foo <- function() {
(a + b)/(c - d)
}
# main function
bar <- function(a, b, c, d) {
z <- foo()
z * 3
}
bar(a = a, b = b, c = c, d = d)
bar <- function(a, b, c, d) {
foo <- function() {
(a + b)/(c - d)
}
z <- foo()
z * 3
}
bar(a = 1, b = 2, c = 3, d = 4)
# -9