Here is yet another way of doing it using 'local': > junk<- vector("list",4) > for(i in 1:4) { + junk[[i]] <- local({ + local_i <- i + function(x) 42 + local_i * x + }) + } > for (i in 1:4) cat(i, junk[[i]](1), '\n') 1 43 2 44 3 45 4 46
On Sat, Jan 7, 2012 at 10:38 AM, Gabor Grothendieck <ggrothendi...@gmail.com> wrote: > On Sat, Jan 7, 2012 at 10:23 AM, Duncan Murdoch > <murdoch.dun...@gmail.com> wrote: >> On 12-01-06 10:21 PM, Rolf Turner wrote: >>> >>> On 07/01/12 15:51, R. Michael Weylandt<michael.weyla...@gmail.com> wrote: >>>> >>>> I imagine the answer will involve lazy evaluation and require you use >>>> force() but I'm not quite qualified to pronounce and not at a computer to >>>> test. >>> >>> >>> I think you've got it; I tried >>> >>> junk<- vector("list",4) >>> for(i in 1:4) { >>> junk[[i]]<- eval(bquote(function(x){42 + .(force(i))*x})) >>> } >>> >>> and got the result that I wanted. Still don't completely understand, but >>> it at least makes vague sense and makes me a bit more comfy. >> >> >> I'm not so sure. The index in a for loop isn't supposed to be a promise. >> To me, it looks like a bug, maybe in bquote()... >> > > These two variations without bquote and the third which just replaces > for with while all (that I had previously posted) do work: > > # 1 > junk <- vector("list",4) > for(i in 1:4) { > junk[[i]] <- eval(substitute(function(x) { 42 + i * x }, list(i = i))) > } > junk > > # 2 > junk <- vector("list",4) > for(i in 1:4) { > junk[[i]] <- eval(parse(text = paste("function(x) { 42 +", i, "*x }"))) > } > junk > > # 3 - from my prior post > junk <- vector("list",4) > i <- 1 > while(i <= 4) { > junk[[i]] <- eval(bquote(function(x){42 + .(i)*x})) > i <- i + 1 > } > junk > > -- > Statistics & Software Consulting > GKX Group, GKX Associates Inc. > tel: 1-877-GKX-GROUP > email: ggrothendieck at gmail.com > > ______________________________________________ > 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. -- Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it. ______________________________________________ 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.