如何在函数中本地存储变量。
testing <- function(number.info){
if (!exists('x')){
x <- 0
}
x <- x + number.info
return(x)
}
testing(2)
testing(2)
正如我们在每次运行函数时看到的那样,它返回相同的值,因为x未被存储。
这背后的动机是创建一个可以产生信息的功能。
编辑:不是重复的问题,我确实事先检查了这个答案。原因是我不需要在功能之外使用它。我只是希望函数存储它,以便我输入更多数据,它输出一个更聪明的&#39;结果使用这个新信息。我不想使用全球环境。
答案 0 :(得分:3)
您可以将值列出到全局环境。或者您正在处理的环境:
testing <- function(number.info){
if (!exists('x')){
x <- 0
}
x <- x + number.info
list2env(list(x=x),.GlobalEnv)
return(x)
}
testing(2)
[1] 2
testing(2)
[1] 4
如果您确实想创建一个新环境,那么您可以执行以下操作:
myenv=new.env()
testing <- function(number.info){
if (!exists('x',envir = myenv)){
assign("x", 0,envir = myenv)
}
x=get("x",envir = myenv) + number.info
assign("x", x,envir = myenv)
return(x)
}
testing(2)
[1] 2
testing(2)
[1] 4