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@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel