繁体   English   中英

如何让辅助函数从主函数继承变量

[英]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()将在定义它的环境中查找abcd

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM