繁体   English   中英

允许R函数直接更改父环境

[英]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$aresult$b的值分别为ab

另请参见函数返回多个值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM