[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