[Rd] delayedAssign changing values

Simon Urbanek simon.urbanek at r-project.org
Thu Apr 26 18:53:42 CEST 2012


On Apr 26, 2012, at 11:59 AM, ghostwheel wrote:

> It is really strange that the delayedAssign is evaluated in the environment it is called from,

Not quite, it is evaluated in the environment you specify - and you have control over both environments ... see ?delayedAssign


> and thus can have side effects.
> so
> x=2
> y=3
> delayedAssign("x", {y <- 7; y+3}) 
> 
> gives
>> x
> [1] 10
>> y
> [1] 7
> 
> Both x and y changed.
> More intuitive would have been the behavior
> x=2
> y=3
> delayedAssign("x", local({y <- 7; y+3}) ) 
>> x
> [1] 10
>> y
> [1] 3
> which only changes x.
> Or, at least that should be the default behavior....
> 

That is questionable - I think it is more logical for both environments to be the same as default. Just think if it -- the point here is to access lazy evaluation which is exactly what it does - lazy evaluation takes place in the original environment, not in another one.

Cheers,
Simon



> Michael
> 
> --
> View this message in context: http://r.789695.n4.nabble.com/delayedAssign-changing-values-tp4588108p4590242.html
> Sent from the R devel mailing list archive at Nabble.com.
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
> 



More information about the R-devel mailing list