How to unload a package without restarting R
I'd like to unload a package without having to restart R (mostly because restarting R as I try out different, conflicting packages is getting frustrating, but conceivably this could be used in a program to use one function and then another--although namespace referencing is probably a better idea for that use).
?library
doesn't show any options that would unload a package.
There is a suggestion that detach
can unload package, but the following both fail:
detach(vegan)
Error in
detach(vegan)
: invalidname
argument
detach("vegan")
Error in
detach("vegan")
: invalidname
argument
So how do I unload a package?
Solution 1:
Try this (see ?detach
for more details):
detach("package:vegan", unload=TRUE)
It is possible to have multiple versions of a package loaded at once (for example, if you have a development version and a stable version in different libraries). To guarantee that all copies are detached, use this function.
detach_package <- function(pkg, character.only = FALSE)
{
if(!character.only)
{
pkg <- deparse(substitute(pkg))
}
search_item <- paste("package", pkg, sep = ":")
while(search_item %in% search())
{
detach(search_item, unload = TRUE, character.only = TRUE)
}
}
Usage is, for example
detach_package(vegan)
or
detach_package("vegan", TRUE)
Solution 2:
You can also use the unloadNamespace
command, as in:
unloadNamespace("sqldf")
The function detaches the namespace prior to unloading it.
Solution 3:
You can uncheck the checkbox button in RStudio (packages).
Solution 4:
I tried what kohske wrote as an answer and I got error again, so I did some search and found this which worked for me (R 3.0.2):
require(splines) # package
detach(package:splines)
or also
library(splines)
pkg <- "package:splines"
detach(pkg, character.only = TRUE)