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 required
previously.
detach(name, pos = 2, unload = FALSE)
name |
The object to detach. Defaults to |
pos |
Index position in |
unload |
A logical value indicating whether or not to attempt to
unload the namespace and S4 methods when a package is being
detached. If the package has a namespace and |
This 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 loaded name space.
So detaching and re-attaching a package may not refresh some
or all components of the package, and is inadvisable.
The attached database is returned invisibly, either as
data.frame
or as list
.
You cannot detach either the workspace (position 1) or the base package (the last item in the search list).
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)
## could equally well use detach("package:splines")
## but NOT pkg <- "package:splines"; detach(pkg)
## Instead, use
library(splines)
pkg <- "package:splines"
detach(pos = match(pkg, search()))
## 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])
eval(substitute(detach(n), list(n=name)))
}
attach_and_detach(women, pos=3)