If you use '<<-' remember that you are going to get into trouble and it will
be a challange to debug your script.  Only use it if you have a real good
understanding of the scoping rules in R and have exhausted all the other
avenues.

I, like Greg, am guilty of using it because I still keep some of my old
habits (like COMMON in FORTRAN) and every so often do have the need for a
"global" variable I can change in a lower level routine without returning a
value (and am willing to suffer the consequences of "side effects").  And
make sure that you always use the <<- when referring to that object so that
you do not create a local copy in some subroutine and really get messed up.

So as the answer to "when", I typically says "never".

On Wed, Apr 14, 2010 at 11:42 AM, Greg Snow <Greg.Snow@imail.org> wrote:

> The <<- assignment operator is very powerful, but can be dangerous as well.
>  When tempted to use it, look for alternatives first, there may be a better
> way.  But having said that, I am one of the more guilty people for using it
> (quite a few of the functions in the TeachingDemos package use <<-).
>
> The main use that I see is when you are using a function written by someone
> else that takes one of your functions as an argument and you want to save
> information from your function that is not being passed back through the
> calling function.  For example you may want to trace the calls to your
> function that is being called by optim, just define your function A which
> defines within it function B which is to be optimized, A also contains an
> empty vector to store results in, then A calls optim passing B to it, B uses
> <<- to update the vector in A every time that it is called, now A has the
> results of optim and also a trace of info on all the calls to B.
>
> <<- can also be used for package local variables (less evil than globals)
> where within a package you can call one function to set some things up, then
> other functions in the package can refer to the variable created to see the
> setup as well as modifying options local to the package.
>
> Hope this helps,
>
> --
> Gregory (Greg) L. Snow Ph.D.
> Statistical Data Center
> Intermountain Healthcare
> greg.snow@imail.org
> 801.408.8111
>
>
> > -----Original Message-----
> > From: r-help-bounces@r-project.org [mailto:r-help-bounces@r-
> > project.org] On Behalf Of Tal Galili
> > Sent: Tuesday, April 13, 2010 8:03 AM
> > To: r-help@r-project.org
> > Subject: [R] <<- how/when/why do you use it?
> >
> > 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.
> >
> > Thanks,
> > Tal
> >
> >
> > ----------------Contact
> > Details:-------------------------------------------------------
> > Contact me: Tal.Galili@gmail.com |  972-52-7275845
> > Read me: www.talgalili.com (Hebrew) | www.biostatistics.co.il (Hebrew)
> > |
> > www.r-statistics.com (English)
> > -----------------------------------------------------------------------
> > -----------------------
> >
> >       [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > 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-<http://www.r-project.org/posting->
> > guide.html
> > and provide commented, minimal, self-contained, reproducible code.
>
> ______________________________________________
> 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<http://www.r-project.org/posting-guide.html>
> and provide commented, minimal, self-contained, reproducible code.
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem that you are trying to solve?

	[[alternative HTML version deleted]]

