On Sun, Jan 8, 2012 at 7:50 AM, Duncan Murdoch <murdoch.dun...@gmail.com> wrote: > On 12-01-07 2:44 PM, cbe...@tajo.ucsd.edu wrote: >> >> Duncan Murdoch<murdoch.dun...@gmail.com> writes: >> >>> 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()... >>> >> >> Duncan, >> >> IIUC, the promise is created by bquote(). > > > No, as Gabor said, there was no promise there. Luke Tierney tracked it down > to a bug, which is now fixed in R-patched and R-devel (as of revision > r58074). >
I think it has been discussed before but this is a good example where it would have been nice to have a function in R similar to the ispromise function in my post. promises tend to be mysterious since there is no way short of what I did to actually find out if an object is a promise or not. (Also it would be useful to have a facility for copying objects without forcing promises -- something else that can only be done at the C level currently.) -- 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.