每次调用函数时,都会增加函数内部的值

时间:2015-09-21 07:55:14

标签: r function

我有一个功能说,

inc <- function(t) {
       f <- 1
       t + f
}

因此,第一次调用函数inc时,f将为1,但下次调用时f值应为2 }当第3次调用函数inc时,f值应为3,等等......

我如何在R中执行此操作?

2 个答案:

答案 0 :(得分:6)

我经常使用这个。我不知道这是一招还是黑客攻击:

getF <- function(){
   x <- 1
   function(t){
      x <<- t + x
   }
}

f <- getF() 

f是一个函数(getF的返回值),它的封闭环境不是全局环境,而是定义了f的环境。看environment(f)<<-x分配到该环境中:请参阅ls(environment(f))get("x", environment(f))

print(f(3))#4
print(f(4))#8

答案 1 :(得分:3)

这可能更容易理解,但在工作区中创建一个环境作为副作用:

inc <- function(t) {
  if (!exists("e")) {
    e <<- new.env()
    e$x <- 1
  }

  e$x <- e$x + t
  e$x
}

inc(2)
#[1] 3
inc(2)
#[1] 5