[Rd] Trying to understand the search path and namespaces

Hadley Wickham hadley at rice.edu
Tue Nov 16 01:51:09 CET 2010


> With a small risk of being incorrect (and the chance of learning
> something new), I'll give it a try:
>
> A search for a functions/objects/... that is not in the same package
> environment is done in the order that the search() path gives.  The
> exception to this iff your package has a namespace, then the 'base'
> package environment is always searched first (before any other
> environments).  The ordering of the search is important when there
> exist multiple package environments with the same function.
>
> Is that of any help?

Well, that's what I thought too.  But:

parents <- function(x) {
  if (identical(x, emptyenv())) return()
  c(environmentName(x), parents(parent.env(x)))
}
> parents(as.environment("package:devtools"))
[1] "package:devtools" "package:methods"  "Autoloads"        "base"

And package:testthat isn't listed there.  (But Autoloads is suggestive...)

Hadley

-- 
Assistant Professor / Dobelman Family Junior Chair
Department of Statistics / Rice University
http://had.co.nz/



More information about the R-devel mailing list