如何更改函数声明的变量的值?

时间:2015-11-27 10:38:24

标签: function variables rstudio overwrite

让我们说一个名为" ENV.myvar"的变量。在你的代码中。然后你已经写了一个函数," myfun",它有一些目标并返回一个对象(例如一个数组)。 ENV.myvar用于计算,由于某种原因,它在过程中被修改。

ENV.myvar <- 0;
myfun <- function(in1,in2,...,inN){

#declaring the output object
fun.myarray <- c(0,0,0);

#some code
...
#here ENV.myvar is modified for some reason
ENV.myvar = ENV.myvar + 20;

#code that works on fun.myarray
...
#return the object
fun.myarray
}

最后我们谈到问题的关键点:函数只返回对象,但是应该永久地覆盖在进程中使用的外部变量。是否有可能以某种方式?

1 个答案:

答案 0 :(得分:0)

是的,你可以,即使不推荐这样做,因为它不是函数的预期行为来改变其环境之外的任何东西。不过,这就是你可以做到的:

textmode.o

您可以更改myvar <- 0 myf <- function() { assign("myvar", 10, envir = parent.env(environment())) return("Value of 'myvar' changed to 10 in parent environment") } myf() myvar # [1] 10 部分以获取特定环境,或仅parent.env(environment()),具体取决于调用堆栈和您的需求。