From hb at biostat.ucsf.edu  Tue Nov 16 01:02:19 2010
From: hb at biostat.ucsf.edu (Henrik Bengtsson)
Date: Mon, 15 Nov 2010 16:02:19 -0800
Subject: [Rd] Trying to understand the search path and namespaces
In-Reply-To: <AANLkTin090pRti8dXknLKtpFmUmmvRsAz6a0V2mx5iOM@mail.gmail.com>
References: <AANLkTin090pRti8dXknLKtpFmUmmvRsAz6a0V2mx5iOM@mail.gmail.com>
Message-ID: <AANLkTi=3K0T7qzQnRU-Q8h3RVTDS+UQ5CmcOs4xZJYfD@mail.gmail.com>

On Mon, Nov 15, 2010 at 3:26 PM, Hadley Wickham <hadley at rice.edu> wrote:
> Hi all,
>
> I'm trying to understand how the search path and namespaces interact.
> For example, take the devtools package which suggests the testthat
> package. ?Here's what the search path looks like after I load each of
> those packages:
>
>> library(devtools)
>> search()
> ?[1] ".GlobalEnv" ? ? ? ?"package:devtools" ?"package:stats"
> ?[4] "package:graphics" ?"package:grDevices" "package:utils"
> ?[7] "package:datasets" ?"package:methods" ? "Autoloads"
> [10] "package:base"
>> library(testthat)
>> search()
> ?[1] ".GlobalEnv" ? ? ? ?"package:testthat" ?"package:devtools"
> ?[4] "package:stats" ? ? "package:graphics" ?"package:grDevices"
> ?[7] "package:utils" ? ? "package:datasets" ?"package:methods"
> [10] "Autoloads" ? ? ? ? "package:base"
>
> My question is this: when I execute the test function in devtools
> function it calls the the test_package function in the testthat
> package - but that function is located higher up the search path - how
> does R find it?

With a small risk of being incorrect (and the chance of learning
something new), I'll give it a try:

A search for a functions/objects/... that is not in the same package
environment is done in the order that the search() path gives.  The
exception to this iff your package has a namespace, then the 'base'
package environment is always searched first (before any other
environments).  The ordering of the search is important when there
exist multiple package environments with the same function.

Is that of any help?

/Henrik

>
> (I ask this question because I'm trying to simulate package loading
> from within R to simplify the development cycle, but something is
> missing in my knowledge of namespaces, and so I have the devel
> versions of my packages can't access packages that are loaded after
> they are)
>
> Hadley
>
> --
> Assistant Professor / Dobelman Family Junior Chair
> Department of Statistics / Rice University
> http://had.co.nz/
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



[Rd] Trying to understand the search path and namespaces
Henrik Bengtsson