[R] Superassignment (<<-) and indexing
Thomas Lumley
tlumley at u.washington.edu
Sat Sep 3 00:23:49 CEST 2005
On Fri, 2 Sep 2005, Spencer Graves wrote:
> Permit a mild protest on the word "appropriate" in this context. The
> global assignment operator "<<-" provides, for my tastes, excessive
> opportunities for problems. If I define "x" someplace else and then
> call your function, it may change my "x" in ways that generate
> considerable wailing and gnashing of teeth.
No, no, no.
The sensible and appropriate uses of <<- involve modifying a variable that
already exists in the lexical parent environment. In these cases it can't
escape and ravage the calling environment.
Certainly using <<- to assign to the calling environment is bogus. In
addition to your complaints, it doesn't even work (except from the global
environment), since <<- searches the lexical stack rather than the call
stack.
In R, <<- can be used safely to maintain state inside a function or shared
between a set of functions (as in demo(scoping), or demo(tkdensity)). In
S-PLUS it is admittedly harder to come up with good uses.
-thomas
More information about the R-help
mailing list