在函数中存储变量

时间:2018-04-07 00:25:06

标签: r function environment-variables

如何在函数中本地存储变量。

testing <- function(number.info){
  if (!exists('x')){
    x <- 0
  }
    x <- x + number.info
  return(x)
}
testing(2)
testing(2)

正如我们在每次运行函数时看到的那样,它返回相同的值,因为x未被存储。

这背后的动机是创建一个可以产生信息的功能。

编辑:不是重复的问题,我确实事先检查了这个答案。原因是我不需要在功能之外使用它。我只是希望函数存储它,以便我输入更多数据,它输出一个更聪明的&#39;结果使用这个新信息。我不想使用全球环境。

1 个答案:

答案 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