![](/img/trans.png)
[英]Is in case of R functions a parent's parent environment of an environment also parent to the environment?
[英]Allowing R functions to directly alter the parent environment
我试图弄清楚如何允许一个函数在其父环境中直接更改或创建变量,无论父环境是全局环境还是另一个函数。
例如,如果我有一个功能
my_fun <- function(){
a <- 1
}
我想调用my_fun()产生与执行a <- 1
相同的结果。
我知道实现此目的的一种方法是按以下方式使用parent.frame
,但我希望使用一种不涉及重写每个变量分配的方法。
my_fun <- function(){
env = parent.frame()
env$a <- 1
}
尝试with
:
g <- function(env = parent.frame()) with(env, { b <- 1 })
g()
b
## [1] 1
请注意,通常最好将变量作为返回值传递,而不是直接在父框架中创建它们。 如果您有许多要返回的变量,则始终可以将它们返回到列表中,例如h <- function() list(a = 1, b = 2); result <- h()
h <- function() list(a = 1, b = 2); result <- h()
现在result$a
和result$b
的值分别为a
和b
。
另请参见函数返回多个值 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.