Skip to content
Prev 33914 / 63424 Next

Load a package without installing it

On Fri, Sep 04, 2009 at 08:39:12AM -0500, Hadley Wickham wrote:

            
Why would you ever need to restart R in such a situation?

What I do is make the code change in my package, build it from source
like so:

  R CMD INSTALL $r_lazy_arg -l ../R $Library

and then detach and re-attach it in my R session with:

  detach("package:my.pkg") ; library(my.pkg, lib.loc="/home/me/my-R-stuff/R")

That's it.  Works fine as long as your package doesn't use namespaces;
an additional command is necessary to handle namespaces but I forget
what it is.  Works fine for packages with C code too, as long as
you've correctly set up your package's .First.lib() and .Last.lib()
your to call library.dynam() library.dynam.unload().

I'm not sure whether the detach() will play nicely with package
dependencies, as I've found them annoying in other circumstances and
so tend to never use package dependencies in my code.

It'd be nice not to have to "compile" the R code at the command line
all the time and instead just have R read my source files from their
original location when I call library(), but the above isn't bad.
source() and load() both dump code into your top-level workspace,
right?  When I'm developing a package, I'd generally rather have R
access my package's stuff via the search path in the usual manner, not
from some other special location that Production never uses.