Hmmm, I think restarting R is not a very good solution. It is rather ugly in the first place. But perhaps even more importantly, it can be rather inconvenient if one has a large data set in the memory and needs to save/load it just to reload a package that was updated in the meanwhile.
This happens to me quite often with 20-40Gb of data, so I would really love to have a solution for proper detach/unload. Best, Gabor On Fri, Feb 20, 2009 at 1:32 AM, Duncan Murdoch <murd...@stats.uwo.ca> wrote: > On 19/02/2009 6:19 PM, Alex F. Bokov wrote: >> >> Hello. To save the hassle of quitting and restarting R every time I >> rebuild the package I'm working on (for the purposes of this question called >> "roots") I would like to write a script cleanly remove the package from my R >> session and then load it again. Of course detach("package:roots") works for >> the native R objects in the package. However, the compiled C library remains >> loaded. Using library.dynam.unload as documented results in: >> >> Error in library.dynam.unload("roots.so", >> "~/R/x86_64-pc-linux-gnu-library/2.8/roots/libs/") : >> shared library 'roots' was not loaded >> >> I also tried the above command with the file extension omitted and the >> last one and two levels of the directory path omitted. In both cases I still >> get the "not loaded" error. I've also Googled the list archives and while >> there were several questions like mine, none of them were answered by the >> list. Am I to believe that this is something hardly anybody does? Does this >> mean everybody sits around waiting for R to start up everytime they make a >> minor change to the C source? >> >> If there is a tutorial for doing this, I'd much appreciate the link. > > > This is more of an R-devel question than R-help, so if this doesn't answer > your question, please follow up there. > > On Windows, the following sort of works: > >> library(rgl) >> .dynLibs() > Filename Dynamic.Lookup > 1 F:/R/R-2.8.1/library/methods/libs/methods.dll FALSE > 2 F:/R/R-2.8.1/library/grDevices/libs/grDevices.dll FALSE > 3 F:/R/R-2.8.1/library/stats/libs/stats.dll FALSE > 4 F:/R/R-2.8.1/library/rgl/libs/rgl.dll TRUE > >> library.dynam.unload("rgl", "F:/R/R-2.8.1/library/rgl") > > I say "sort of", in that I get no error messages and the dll is no longer > locked in use as it normally would be in Windows, but reloading the package > doesn't function properly. It's possible some combination of detach() and > unloadNamespace() would get a clean unload, but really, I normally just quit > R and restart. It's pretty quick to start up, compared to the recompile > time for the package. > > Duncan Murdoch > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > -- Gabor Csardi <gabor.csa...@unil.ch> UNIL DGM ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.