[R] *not* using attach() *but* in one case ....

Liaw, Andy andy_liaw at merck.com
Thu May 19 16:34:27 CEST 2011


From: Prof Brian Ripley
> 
> Hmm, load() does have an 'envir' argument.  So you could simply use 
> that and with() (which is pretty much what attach() does internally).
> 
> If people really wanted a lazy approach, with() could be extended to 
> allow file names (as attach does).

I'm not sure if laziness like this should be encouraged.  

If I may bring up another "black hole":  IMHO the formula interface
allows too much flexibility (perhaps to allow some laziness?) that
beginners and even non-beginners fall into its various traps a bit too
often, and sometimes not even aware of it.  It would be great if there's
a way to (optionally?) limit the scope of where a formula looks for
variables.
 
Just my $0.02...

Andy

> On Thu, 19 May 2011, Martin Maechler wrote:
> 
> > [modified 'Subject' on purpose;
> > Good mail readers will still thread correctly, using the 
> 'References'
> > and 'In-Reply-To' headers, however, unfortunately,
> > in my limited experience, good mail readers seem to 
> disappear more and more ..
> > ]
> >
> >>>>>> Peter Ehlers <ehlers at ucalgary.ca>
> >>>>>>     on Tue, 17 May 2011 06:08:30 -0700 writes:
> >
> >    > On 2011-05-17 02:22, Timothy Bates wrote:
> >    >> Dear Bryony: the suggestion was not to change the name of
> >    >> the data object, but to explicitly tell glm.nb what
> >    >> dataset it should look in to find the variables you
> >    >> mention in the formula.
> >    >>
> >    >> so the salient difference is:
> >    >>
> >    >> m1<- glm.nb(Cells ~ Cryogel*Day, data = side)
> >    >>
> >    >> instead of
> >    >>
> >    >> attach(side) m1<- glm.nb(Cells ~ Cryogel*Day)
> >    >>
> >    >> This works for other functions also, but not uniformly as
> >    >> yet (how I wish it did and I could say hist(x, data=side)
> >    >> Instead of hist(side$x)
> >    >>
> >    >> this inconsistency encourages the need for attach()
> >
> >    > Only if the user hasn't yet been introduced to the with()
> >    > function, which is linked to on the ?attach page.
> >
> >    > Note also this sentence from the ?attach page:
> >    > ".... attach can lead to confusion."
> >
> >    > I can't remember the last time I needed attach().
> >    > Peter Ehlers
> >
> > Well, then you don't know  *THE ONE* case where modern users of
> > R should use attach() ... as I have been teaching for a while,
> > but seem not have got enought students listening ;-) ...
> >
> >  ---  Use it instead of load()  {for save()d R objects} ---
> >
> > The advantage of attach() over load() there is that loaded
> > objects (and there maye be a bunch!), are put into a separate
> > place in the search path and will not accidentally overwrite
> > objects in the global "workspace".
> >
> > Of course, there are still quite a few situations {e.g. in
> > typical BATCH use of R for simulations, or Sweaving, etc} where
> > load() is good enough, and the extras of using attach() are not
> > worth it.
> >
> > But the unconditional  "do not use attach()"
> > is not quite ok,
> > at least not when you talk to non-beginners.
> >
> > Martin Maechler, ETH Zurich
> 
> -- 
> Brian D. Ripley,                  ripley at stats.ox.ac.uk
> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
> University of Oxford,             Tel:  +44 1865 272861 (self)
> 1 South Parks Road,                     +44 1865 272866 (PA)
> Oxford OX1 3TG, UK                Fax:  +44 1865 272595
> 
> ______________________________________________
> R-help at 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.
> 
Notice:  This e-mail message, together with any attachme...{{dropped:11}}



More information about the R-help mailing list