[英]How to have helper function inherit variables from main function
我想建立一个功能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 <- function(a, b, c, d) {
(a + b)/(c - d)
}
# main function
bar <- function(a, b, c, d) {
z <- foo(a, b, c, d)
z * 3
}
bar(a = 1, b = 2, c = 3, d = 4)
它可以首先全局分配变量,但并不理想:
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
定义了foo
,则foo()
将在定义它的环境中查找a
、 b
、 c
和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
您可以在此处阅读更多相关信息: http : //adv-r.had.co.nz/Functions.html#lexical-scoping
“...查看当前函数的内部,然后是该函数的定义位置,等等,一直到全局环境,然后是其他加载的包。”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.