让我们说一个名为" 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
}
最后我们谈到问题的关键点:函数只返回对象,但是应该永久地覆盖在进程中使用的外部变量。是否有可能以某种方式?
答案 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())
,具体取决于调用堆栈和您的需求。