is.environment, as.environment, and NULL
On Tue, 28 Aug 2001, Kurt Hornik wrote:
Peter Dalgaard BSA writes:
John Chambers <jmc@research.bell-labs.com> writes:
There isn't a completely consistent solution, given the use of NULL as an environment. For the moment it seemed best to live with that one anomalous result in the tests.
The use of NULL for the base environment is something which I would like to see go away anyway. It makes little sense semantically (if anything, you would want the NULL environment to be an empty one), and there are pitfalls where a NULL value returned by accident can cause code to work in base but not in a package.
I did start to look into it at some point but ran out of stamina or got distracted (probably by release timings as usual...). As I recall it, NULL for base envir is only really used in a handful of places as a sentinel for searches through the search path, as in:
for (rho = R_GlobalEnv; rho != R_NilValue; rho = ENCLOS(rho)) ..
The base environment is special because the symbol lookups are different there, but it could be represented by R_BaseEnv or some such instead of R_NilValue. I doubt that much interpreted code needs to explicitly test whether an environment is the base environment. One thing to watch out for might be saved workspaces, though. On the other hand, we do not save the search path, so maybe not...
A question, and a remark. Question, would we want to keep as.environment(NULL) to give the base package, so that code like ls(envir = NULL) will still work?
Interesting. Was it ever documented to?
Remark, we once discussed making package environments (in particular for base) read-only. One way of doing this is via setting attributes, but we cannot do this on NULL. Not that I think this is the way to do it, though ...
NULL is just shorthand: there is a proper R object for base:
.GlobalEnv
<environment: R_GlobalEnv>
is.null(.GlobalEnv)
[1] FALSE It was news to me that NULL for .GlobalEnv worked at R level. Brian
Brian D. Ripley, ripley@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 272860 (secr) Oxford OX1 3TG, UK Fax: +44 1865 272595 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._