如何从运行时环境中检索对象?
How to retrieve object from runtime environment?
假设我在函数中定义了一个对象:
foo <- function(){
bar <- c("list", "of", "object", "values")
}
如何从执行函数时创建的临时运行时环境中检索此对象?
我知道我可以编辑函数以使用 <<-
或 assign()
将此对象分配给永久的命名环境 - 或者,更粗略地说,只需从函数体 - 但我正在寻找一种无需修改函数的编程解决方案。
传递bar
给调用者一个正常的returns吧。在示例函数中它将是:
bar <- foo()
如果 bar
是 foo
中未返回的中间结果,则使用 trace
:
trace(foo, exit = quote(bar <<- bar))
## [1] "foo"
foo()
## Tracing foo() on exit
untrace(foo)
bar
## [1] "list" "of" "object" "values"
假设我在函数中定义了一个对象:
foo <- function(){
bar <- c("list", "of", "object", "values")
}
如何从执行函数时创建的临时运行时环境中检索此对象?
我知道我可以编辑函数以使用 <<-
或 assign()
将此对象分配给永久的命名环境 - 或者,更粗略地说,只需从函数体 - 但我正在寻找一种无需修改函数的编程解决方案。
传递bar
给调用者一个正常的returns吧。在示例函数中它将是:
bar <- foo()
如果 bar
是 foo
中未返回的中间结果,则使用 trace
:
trace(foo, exit = quote(bar <<- bar))
## [1] "foo"
foo()
## Tracing foo() on exit
untrace(foo)
bar
## [1] "list" "of" "object" "values"