Вот один из способов:
f <- local({ x<-NULL; function(y) {
if (is.null(x)) { # or perhaps !missing(y)
x <<- y+1
}
x
}})
f(3) # First time, x gets assigned
#[1] 4
f() # Second time, old value is used
#[1] 4
В результате local
создает новую среду вокруг x<-NULL
и объявления функции. Таким образом, внутри функции можно получить переменную x
и присвоить ей, используя <<-
.
Вы можете найти среду для функции, подобной этой:
e <- environment(f)
ls(e) # "x"