如何从运行时环境中检索对象?

How to retrieve object from runtime environment?

假设我在函数中定义了一个对象:

foo <- function(){
  bar <- c("list", "of", "object", "values")
}

如何从执行函数时创建的临时运行时环境中检索此对象?

我知道我可以编辑函数以使用 <<-assign() 将此对象分配给永久的命名环境 - 或者,更粗略地说,只需从函数体 - 但我正在寻找一种无需修改函数的编程解决方案。

传递bar给调用者一个正常的returns吧。在示例函数中它将是:

bar <- foo()

如果 barfoo 中未返回的中间结果,则使用 trace:

trace(foo, exit = quote(bar <<- bar))
## [1] "foo"

foo()
## Tracing foo() on exit 

untrace(foo)

bar
## [1] "list"   "of"     "object" "values"