[R] package environment versus namespace environment
Henrik Bengtsson
hb at biostat.ucsf.edu
Sun Mar 9 04:52:12 CET 2014
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 <btyner at 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 at 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 at r-project.org
> 3. https://stat.ethz.ch/mailman/listinfo/r-help
> 4. http://www.R-project.org/posting-guide.html
>
> ______________________________________________
> R-help at 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.
>
More information about the R-help
mailing list