Hi Everyone: Suraj will respond to Duncan's comments below promptly. Suraj doesn't have the original thread so I am just helping out by commenting here so that he can respond and the thread can be kept continuous.
Mark On Sun, Mar 9, 2014 at 9:09 AM, Duncan Murdoch <murdoch.dun...@gmail.com>wrote: > On 14-03-08 6:42 PM, Benjamin Tyner 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.) >> > > No. The article that Henrik cited gives a reasonable description up until > near the end, where (in my opinion) it makes things unnecessarily > complicated. I'd recommend that you stop reading around where he tries to > explain the dotted lines. In particular, ignore the second version of the > "Map of the World"; the first one is accurate, the second is just > misleading. > > In answer to your question: Gupta's article misses the possibility of > packages that are loaded but not in the search path. In the notation of > the first part of that article, loading a namespace just puts it in the > middle two columns (i.e. creates the namespace and imports environments) > without putting it in the search list. That happens when you import or > load a package without attaching it. The search path imposes an ordering, > things that aren't in it aren't ordered. > > Duncan Murdoch > > > >> 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 >>> <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@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. > [[alternative HTML version deleted]] ______________________________________________ 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.