【问题标题】:Inside an R function, how do I access the calling environment?在 R 函数内部,如何访问调用环境?
【发布时间】:2021-01-08 20:24:49
【问题描述】:
foo <- function() {
  # how to know what environment_of_caller is
}

caller <- function() {
  # environment_of_caller
  foo()
}

我正在编写的函数需要知道其调用者的环境。可以在不将环境作为参数传递的情况下完成吗?

【问题讨论】:

  • 你可以使用parent.frame

标签: r r-environment


【解决方案1】:

假设你真的需要这样做,parent.frame() 函数给出了它。

foo <- function() {
  parent.frame()$a
}

caller <- function() {
  a <- 1
  foo()
}

caller()
## [1] 1

但是,通常人们会这样写(仅更改 foo),因为它提供了所需的功能,而且还提供了更改使用环境的灵活性。

foo <- function(envir = parent.frame()) {
  envir$a
}

caller <- function() {
  a <- 1
  foo()
}

caller()
## [1] 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-16
    • 2012-10-20
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 2012-09-11
    相关资源
    最近更新 更多