How to unload a package without restarting R?


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 detach guarantee that all copies are detached, use this function.

detach_package <- function(pkg, character.only = FALSE)
    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", TRUE)

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:


Error in detach(vegan) : invalid name argument


Error in detach("vegan") : invalid name argument

So how do I unload a package?

When you are going back and forth between scripts it may only sometimes be necessary to unload a package. Here's a simple IF statement that will prevent warnings that would appear if you tried to unload a package that was not currently loaded.

if("package:vegan" %in% search()) detach("package:vegan", unload=TRUE) 

Including this at the top of a script might be helpful.

I hope that makes your day!

You can also use the unloadNamespace command, as in:


The function detaches the namespace prior to unloading it.

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

or also

pkg <- "package:splines"
detach(pkg, character.only = TRUE)

you can uncheck the check box button in RStudio (packages)

Just go to OUTPUT window, then click on Packages icon (it is located between Plot and Help icons). Remove "tick / check mark" from the package you wanted be unload.

For again using the package just put a "tick or Check mark" in front of package or use :

library (lme4)