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
<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
>
>
>
> ______________________________________________
> 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.