loading an updated version of a package during an active R session?
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