[R] I really don't understand functions in R :-)

Thomas Lumley tlumley at u.washington.edu
Fri Oct 20 18:49:20 CEST 2006


On Fri, 20 Oct 2006, Alberto Monteiro wrote:

> An example:
>
> n <- 3
> f <- function(x) x^n
> f(2)
> # [1] 8
> n <- 2
> f(2)
> # [1] 4
> f
> # function(x) x^n
>
> Ok, I know this is trivial, because function f is foverer bound
> to the variable n. But how can I _fix_ n when I define _f_, so
> that changing _n_ won't change the function f?

You need to make sure that n is stored inside the function. One approach 
is to write a function that makes functions like f():

> make.f<-function(n) {function(x) x^n}
> n<-2
> f2<-make.f(n)
> n<-3
> f3<-make.f(n)
> f2(2)
[1] 4
> f3(2)
[1] 8

f2() and f3() each have a private copy of n from their enclosing 
environment.

 	-thomas



More information about the R-help mailing list