Thanks a lot for your readiness! Problem (apparently) solved! Best regards,
Eduardo Horta On Mon, Nov 15, 2010 at 7:10 PM, William Dunlap <wdun...@tibco.com> wrote: > 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. > > > [[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.