如何让辅助函数从主函数继承变量
How to have helper function inherit variables from main function
我想设置一个依赖辅助函数 foo()
的函数 bar()
。我正在努力找出设置变量定义的最简洁方法,这样我就不必在 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
“...查看当前函数的内部,然后是定义该函数的位置,依此类推,一直到全局环境,然后是其他加载的包。”
我想设置一个依赖辅助函数 foo()
的函数 bar()
。我正在努力找出设置变量定义的最简洁方法,这样我就不必在 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
“...查看当前函数的内部,然后是定义该函数的位置,依此类推,一直到全局环境,然后是其他加载的包。”