[R] Load and unload libraries

Rita Ribeiro rita at liacc.up.pt
Tue Apr 1 12:43:57 CEST 2003


On Tue, 2003-04-01 at 10:53, Prof Brian Ripley wrote:
> On 1 Apr 2003, Rita Ribeiro wrote:
> 
> > I'm having some problems in loading libraries. I wonder if anyone can
> > help me with this.
> > 
> > I have created two libraries with the same name at different locations.
> 
> Do you mean packages?

Yes, sorry. 
Packages in tar.gz files which I have installed with R CMD INSTALL in
different locations, just to test different things.

The library locations are the paths to where the packages have been
installed.

Here's a small simulation:

> library(mylib,lib.loc1)
> .path.package("mylib") # returns lib.loc1
(...)
> detach('package:mylib')
> .path.package("rpart")
Error in .path.package(mylib) : none of the packages are loaded
> exists("mylib") # returns FALSE

> library(mylib,lib.loc2)
> .path.package("mylib") # returns lib.loc2
or
> .find.package("mylib") # returns lib.loc2

The problem is when I invoke mylib function: it uses the binary code
from the first library location.

Is there anyway of "unloading" the first library to load a new one,
although with the same name. Ie is there anyway of getting a "cleanup"
state?

Should I give different names to the packages to solve the problem? I
preferred no to....


My system information:

platform i686-pc-linux-gnu
arch     i686             
os       linux-gnu        
system   i686, linux-gnu  
status                    
major    1                
minor    6.0              
year     2002             
month    10               
day      01               
language R       

Thanks,
Rita
> 
> > I want to use both of them, one at a time.
> > 
> > So I do:
> > 
> > library(mylib,lib.loc1)
> > (....)
> > detach('package:mylib')
> > 
> > library(mylib,lib.loc2)
> > 
> > The problem is that, after this, the used library is still the one first
> > loaded.
> > 
> > Isn't detach command enough? 
> 
> Not in general. detaching a package does not in general unload any 
> *library* (DLL, shared library, dynamic library, name depending on OS)
> that was loaded.  If there are no namespaces involved (a new feature of 
> 1.7.0) it should give you the second version of the R code, and it did so 
> when I just did an experiment.
> 
> I'm afraid you will need to be more precise in your terminology and give 
> us more details.
-- 
Rita Ribeiro <rita at liacc.up.pt>



More information about the R-help mailing list