You could make f[[i]] be function(t)t^2+i for i in 1:10 with f <- lapply(1:10, function(i)local({ force(i) ; function(x)x^2+i})) After that we get the correct results > f[[7]](100:103) [1] 10007 10208 10411 10616 but looking at the function doesn't immdiately tell you what 'i' is in the function > f[[7]] function (x) x^2 + i <environment: 0x19d7458> You can find it in f[[7]]'s environment > get("i", envir=environment(f[[7]])) [1] 7
The call to force() in the call to local() is not necessary in this case, although it can help in other situations. Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > -----Original Message----- > From: r-help-boun...@r-project.org > [mailto:r-help-boun...@r-project.org] On Behalf Of Eduardo de > Oliveira Horta > Sent: Monday, November 15, 2010 12:50 PM > To: r-help@r-project.org > Subject: [R] Defining functions inside loops > > Hello, > > I was trying to define a set of functions inside a loop, with > the loop index > working as a parameter for each function. Below I post a > simpler example, as > to illustrate what I was intending: > > f<-list() > for (i in 1:10){ > f[[i]]<-function(t){ > f[[i]]<-t^2+i > } > } > rm(i) > > With that, I was expecting that f[[1]] would be a function > defined by t^2+1, > f[[2]] by t^2+2 and so on. However, the index i somehow > doesn't "get in" the > function definition on each loop, that is, the functions > f[[1]] through > f[[10]] are all defined by t^2+i. Thus, if I remove the > object i from the > workspace, I get an error when evaluating these functions. > Otherwise, if > don't remove the object i, it ends the loop with value equal > to 10 and then > f[[1]](t)=f[[2]](t)=...=f[[10]](t)=t^2+10. > > I am aware that I could simply put > > f<-function(u,i){ > f<-t^2+i > } > > but that's really not what I want. > > Any help would be appreciated. Thanks in advance, > > Eduardo Horta > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.