[R] loading an updated version of a package during an active R session?
Roger Levy
rlevy at ucsd.edu
Fri Apr 11 01:14:32 CEST 2008
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?
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
More information about the R-help
mailing list