[R] Putting an index explicitly into function code --- a curiosity.

Duncan Murdoch murdoch.duncan at gmail.com
Sat Jan 7 16:23:37 CET 2012


On 12-01-06 10:21 PM, Rolf Turner wrote:
> On 07/01/12 15:51, R. Michael Weylandt<michael.weylandt at 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 Murdoch



More information about the R-help mailing list