[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