On 13/04/2010 10:02 AM, Tal Galili wrote:
Hi all,
Today I came across scoping in the R
intro<http://cran.r-project.org/doc/manuals/R-intro.html#Scope> (after
reading Robert Gentleman
fortune<http://rfortunes.posterous.com/im-always-thrilled-when-people-discover-what>
on
lexical scooping) , and am very curious about the <<- assignment.
The manual showed one (very interesting) example for "<<-", which I feel I
understood. What I am still missing is the context of when this can be
useful.
So what I would love to read from you are examples (or links to examples) on
when using "<<-" can be interesting/useful. What might be the dangers of
using it (it looks easy to loose track of), and any tips you might feel like
sharing.
It's useful in a couple of contexts.
In a big function, sometimes you have repetitive operations on local
variables: you can write local functions to do them, and modify the
outer local variables using <<-. (See tools::Rd2HTML for lots of
examples of this.)
There's also the use of them as a way to get references to objects that
maintain their state, by returning a function from a function: it can
refer to and modify local variables in the outer function. This is used
in the tkcanvas demo, for example.
One thing to watch out for: if you have code like this:
x <<- 1 # modifies a non-local ("outer") variable
y <- x # assignment from outer x
x <- 2 # creates a local
x <<- 3 # modifies the outer one
z <- x # assignment from local x
then y will get 1, but z will get 2, even though the first and last
pairs of lines look very similar. It's generally confusing to mix <<-
assignments to outer variables with <- assignments to locals having the
same name. Just use different names.
Duncan Murdoch
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.