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

How to change the value of a variable that is declared out of a function?

假设您的代码中有一个名为 "ENV.myvar" 的变量。然后您编写了一个函数 "myfun",它有一些目标和 return 一个对象(例如数组)。 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
}

终于到了问题的要点:函数return只是对象,但应该永久覆盖过程中使用的外部变量。有可能吗?

是的,您可以,尽管不推荐这样做,因为更改其环境之外的任何内容并不是函数的预期行为。尽管如此,您还是可以这样做:

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()) 部分以获得特定的环境,或者只是 .GlobalEnv,具体取决于调用堆栈和您的需要。