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

Martin Maechler maechler at stat.math.ethz.ch
Thu May 19 12:09:50 CEST 2011


[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



More information about the R-help mailing list