detach {base} | R Documentation |
Detach a database, i.e., remove it from the search()
path of available R objects. Usually this is either a
data.frame
which has been attach
ed or a
package which was attached by library
.
detach(name, pos = 2, unload = FALSE, character.only = FALSE, force = FALSE)
name |
The object to detach. Defaults to search()[pos] .
This can be an unquoted name or a character string but not a
character vector. If a number is supplied this is taken as pos .
|
pos |
Index position in search() of the database to
detach. When name is a number, pos = name
is used.
|
unload |
A logical value indicating whether or not to attempt to
unload the namespace when a package is being detached. If the
package has a namespace and unload is TRUE , then
detach will attempt to unload the namespace via
unloadNamespace : if the namespace is imported by
another namespace or unload is FALSE , no unloading
will occur.
|
character.only |
a logical indicating whether name
can be assumed to be character strings. |
force |
logical: should a package be detached even though other loaded packages depend on it? |
This is most commonly used with a single number argument referring to a
position on the search list, and can also be used with a unquoted or
quoted name of an item on the search list such as package:tools
.
If a package has a namespace, detaching it does not by default unload
the namespace (and may not even with unload=TRUE
), and
detaching will not in general unload any dynamically loaded compiled
code (DLLs). Further, registered S3 methods from the namespace will
not be removed. If you use library
on a package whose
name space is loaded, it attaches the exports of the already loaded
name space. So detaching and re-attaching a package may not refresh
some or all components of the package, and is inadvisable.
The return value is invisible. It is NULL
when a
package is detached, otherwise the environment which was returned by
attach
when the object was attached (incorporating any
changes since it was attached).
You cannot detach either the workspace (position 1) nor the base package (the last item in the search list), and attempting to do so will throw an error.
Unloading some name spaces has undesirable side effects: e.g. unloading grid closes all graphics devices, and on most systems tcltk cannot be reloaded once it has been unloaded and may crash R if this is attempted.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
attach
, library
, search
,
objects
, unloadNamespace
,
library.dynam.unload
.
require(splines) # package detach(package:splines) ## or also library(splines) pkg <- "package:splines" detach(pkg, character.only = TRUE) ## careful: do not do this unless 'splines' is not already loaded. library(splines) detach(2) # 'pos' used for 'name' ## an example of the name argument to attach ## and of detaching a database named by a character vector attach_and_detach <- function(db, pos=2) { name <- deparse(substitute(db)) attach(db, pos=pos, name=name) print(search()[pos]) detach(name, character.only = TRUE) } attach_and_detach(women, pos=3)