See Suraj Gupta's online article 'How R Searches and Finds Stuff' from March 29, 2012:
http://obeautifulcode.com/R/How-R-Searches-And-Finds-Stuff/ It's a very useful write up on this topic. /Henrik On Sat, Mar 8, 2014 at 3:42 PM, Benjamin Tyner <bty...@gmail.com> wrote: > > Duncan, > Thank you for the informative link. So, do the loaded namespaces have an > "ordering" akin to the package search path that determines that functions > in > the base namespace can see objects in the utils namespace? (I noticed that > loadedNamespaces() just comes back in alphabetical order.) > Regards > Ben > On 03/07/2014 11:46 AM, Duncan Murdoch wrote: > > On 07/03/2014 10:16 AM, Benjamin Tyner wrote: > > Hello, > I realize that a function in <environment: base> (for example, function > "head1" below) is unable to see (without resorting to "::", anyway) > objects in utils (for example, "head" below), since package:base is > after package:utils on the search path. > > However, I'm wondering what is the machinery that allows a function in > <environment: namespace:base> (for example, function "head2" below) to > be able to see "head" just fine, without needing to resort to "::". > > See Luke Tierney's article in R News, > Name space management for R. Luke Tierney, R News, 3(1):2-6, June 2003 > [1]<http://cran.r-project.org/doc/Rnews/Rnews_2003-1.pdf> > There's a link to it from the R help system. Run help.start(), then look > at "Technical papers" in the Miscellaneous Material section. > I believe most of what it says is still current; the only thing I can see > at a glance that is no longer correct is that in those days namespaces > were optional in packages. Now all packages have namespaces. > Duncan Murdoch > > I'm also wondering more generally, why there is a need (practically > speaking) for a distinction between the environment associated with a > package and the environment associated with the namespace. > $ export R_PROFILE=/home/btyner/Rprofile.site > $ cat /home/btyner/Rprofile.site > sys.source("/home/btyner/head1.R", envir = baseenv()) > sys.source("/home/btyner/head2.R", envir = .BaseNamespaceEnv) > $ cat /home/btyner/head1.R > head1 <- function(x) head(x) > $ cat /home/btyner/head2.R > head2 <- function(x) head(x) > $ Rscript -e "head1(letters)" > Error in head1(letters) : could not find function "head" > Execution halted > $ Rscript -e "head2(letters)" > [1] "a" "b" "c" "d" "e" "f" > $ Rscript -e "sessionInfo()" > R version 3.0.1 (2013-05-16) > Platform: x86_64-pc-linux-gnu (64-bit) > locale: > [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C > [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 > [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 > [7] LC_PAPER=C LC_NAME=C > [9] LC_ADDRESS=C LC_TELEPHONE=C > [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C > attached base packages: > [1] stats graphics grDevices utils datasets base > Regards > Ben > ______________________________________________ > [2]R-help@r-project.org mailing list > [3]https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > [4]http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > > -- > > > References > > 1. http://cran.r-project.org/doc/Rnews/Rnews_2003-1.pdf > 2. mailto:R-help@r-project.org > 3. https://stat.ethz.ch/mailman/listinfo/r-help > 4. http://www.R-project.org/posting-guide.html > > ______________________________________________ > 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.