On 19/05/2011 10:34 AM, Liaw, Andy wrote:
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.

I think there is: put the variables in an environment that doesn't have parents covering everything visible, and use that as the environment of the formula.

For example, you could follow

x <- 1:10
y <- rnorm(10)
z <- rnorm(10)
f <- y ~ x + z

with

e <- new.env(parent=baseenv())
e$x <- x
e$y <- y
environment(f) <- e

and you'll get a failure with

lm(f)

because it can't find z. Obviously this could be wrapped in a friendlier function if you really wanted it.

Duncan Murdoch




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<ehl...@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, rip...@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@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}}

______________________________________________
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.

______________________________________________
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.

Reply via email to