Robert Gentleman wrote:
Hi,
On Fri, Nov 13, 2009 at 4:55 PM, Duncan Murdoch <murd...@stats.uwo.ca> wrote:
On 13/11/2009 7:26 PM, Gabor Grothendieck wrote:
On Fri, Nov 13, 2009 at 7:21 PM, Duncan Murdoch <murd...@stats.uwo.ca>
wrote:
On 13/11/2009 6:39 PM, Gabor Grothendieck wrote:
Note that one should use inherits = FALSE argument on get and exists
to avoid returning objects from the parent, the parent of the parent,
etc.
I disagree. Normally you would want to receive those objects. If you
didn't, why didn't you set the parent of the environment to emptyenv()
when
you created it?
$ does not look into the parent so if you are trying to get those
semantics you must use inherits = FALSE.
Whoops, yes. That's another complaint about $ on environments.
That was an intentional choice. AFAIR neither $ nor [[ on
environments was not meant to mimic get, but rather to work on the
current environment as if it were a hash-like object. One can always
get the inherits semantics by simple programming, but under the model
you seem to be suggesting, preventing such behavior when you don't own
the environments in question is problematic.
Robert
Yes. Also, AFAIR, emptyenv() came later. At the time you couldn't go
deeper than baseenv().
And at any rate, some of the intended applications are dataframe-like,
and I don't think you want to preclude use of with() and other forms of
evaluation in the environment, as in
> e <- evalq(environment(),airquality)
> ls(e)
[1] "Day" "Month" "Ozone" "Solar.R" "Temp" "Wind"
> evalq(logO3 <- log(Ozone), e) # works fine
> lm(Ozone~Wind, data=e) # ditto
...
> parent.env(e) <- emptyenv()
> evalq(logO3 <- log(Ozone), e)
Error in eval(substitute(expr), envir, enclos) :
could not find function "<-"
> lm(Ozone~Wind, data=e)
Error in eval(expr, envir, enclos) : could not find function "list"
--
O__ ---- Peter Dalgaard Ă˜ster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalga...@biostat.ku.dk) FAX: (+45) 35327907
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel