[R] loading an updated version of a package during an active R session?

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Apr 11 07:27:05 CEST 2008


On Thu, 10 Apr 2008, Roger Levy wrote:

> Prof Brian Ripley wrote:
>> On Wed, 9 Apr 2008, Roger Levy wrote:
>> 
>>> I am developing a package and I want to be able to load an updated version 
>>> of the package from within an active R session.  Suppose,
>>> for example, I have a function f within a package X.  In my active
>>> R session, I have already loaded X.  Then I change the R source
>>> code of f within X and rebuild the package as a .tar.gz file on the
>>> command line with
>>> 
>>> R CMD build X
>>> 
>>> Within my R session, is there a way to reload X such that the
>>> updated definition of f will be used?  I have tried:
>>> 
>>>> detach("package:X") install.packages("X.tar.gz", repos=NULL,
>>>> type="source") library(X)
>>> 
>>> but this seems to use the old version of f.  Any suggestions would
>>> be much appreciated!
>> 
>> It does work for some packages but not in general.  If the package
>> has a namespace, you need to unload that, e.g.
>> 
>> unloadNamespace("X")
>> 
>> before library(X) (and that will detach X as well).
>
> Ah, I see -- I was under the mistaken impression that detaching the
> package would also get rid of the namespace.  In my particular case,
> using unloadNamespace() did the trick properly.
>
>> Note too that many (most?) packages with DLLs do not unload the DLL
>> when their namespace is unloaded (or they are detached), in which
>> case you can end up with the new R code and the old compiled code
>
> In my case I am developing on OS X so there are no DLLs, but this is a
> good proviso to know.  Does the same proviso apply to shared objects in Unix 
> and OS X?

There are DLLs -- it is a generic term for 'dynamic library object', the 
things library.dynam handles.  (That Mac OS uses 'dynamic library' for a 
different sort of object postdates this  usage.)

>
> Best & many thanks.
>
> Roger
>
>> So without more details or the example asked for in the footer it is
>> hard to be explicit about what needs to be done.
>
>
> -- 
>
> Roger Levy                      Email: rlevy at ucsd.edu
> Assistant Professor             Phone: 858-534-7219
> Department of Linguistics       Fax:   858-534-4789
> UC San Diego                    Web:   http://ling.ucsd.edu/~rlevy
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-help mailing list