detach {base} | R Documentation

## Detach Objects from the Search Path

### Description

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.

### Usage

    detach(name, pos = 2, unload = FALSE)

### Arguments

`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 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 and S4 methods when a package is being detached. If the package has a namespace and `unload` is `TRUE`, then `detach` will attempt to unload the namespace and remove any S4 methods defined by the package. If the namespace is in use or `unload` is `FALSE`, no unloading will occur.

### Details

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.

### Value

The attached database is returned invisibly, either as `data.frame` or as `list`.

### Note

You cannot detach either the workspace (position 1) or the base package (the last item in the search list).

### References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

### See Also

`attach`, `library`, `search`, `objects`, `unloadNamespace`, `library.dynam.unload` .

### Examples

    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)

[Package base version 2.9.2 Index]