在 R 函数中,如何访问调用环境?

时间:2021-01-08 20:24:49

标签: r r-environment

foo <- function() {
  # how to know what environment_of_caller is
}

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

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

1 个答案:

答案 0 :(得分:4)

假设您确实需要这样做,函数 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