当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R detach 从搜索路径中分离对象


R语言 detach 位于 base 包(package)。

说明

分离数据库,即从数据库中删除它search()可用路径R对象。通常这是一个data.frame这已经是attached 或附加的包library.

用法

detach(name, pos = 2L, unload = FALSE, character.only = FALSE,
       force = FALSE)

参数

name

要分离的对象。默认为 search()[pos] 。这可以是不带引号的名称或字符串,但不能是字符向量。如果提供了数字,则将其视为 pos

pos

要分离的数据库search() 中的索引位置。当name是数字时,使用pos = name

unload

一个逻辑值,指示在分离包时是否尝试卸载名称空间。如果包有命名空间并且 unloadTRUE ,那么 detach 将尝试通过 unloadNamespace 卸载该命名空间:如果该命名空间被另一个命名空间导入或 unloadFALSE ,则不会卸载发生。

character.only

指示name是否可以假定为字符串的逻辑。

force

逻辑:即使其他附加包依赖于某个包,也应该分离该包吗?

细节

这最常与引用搜索列表上的位置的单个数字参数一起使用,也可以与搜索列表上的项目的不带引号或带引号的名称一起使用,例如 package:tools

如果一个包有一个命名空间,默认情况下分离它不会卸载该命名空间(甚至可能不会unload = TRUE),并且分离通常不会卸载任何动态加载的编译代码(DLL);看getLoadedDLLslibrary.dynam.unload。此外,命名空间中已注册的 S3 方法不会被删除,并且由于 S3 方法在注册时未标记到其源,因此通常不可能安全地 un-register 与给定包关联的方法。如果你使用library在加载了名称空间的包上,它附加已加载名称空间的导出。因此,分离并重新附加包可能不会刷新包的部分或全部组件,并且是不可取的。完全分离包的最可靠方法是重新启动R.

返回值为invisible。分离包时为 NULL,否则为附加对象时 attach 返回的环境(包含附加后的任何更改)。

好的做法

不带参数的 detach() 将删除工作区之后搜索路径上的第一项。很容易调用它太多或太少,或者没有注意到自 attach 调用以来搜索路径已更改。

最好避免在函数中使用 attach /detach (请参阅 attach 的帮助),并且在交互式使用和脚本中,谨慎地按名称分离。

注意

您无法分离工作区(位置 1)或 base 包(搜索列表中的最后一项),尝试这样做将引发错误。

卸载某些名称空间会产生不良副作用:例如卸货grid关闭所有图形设备,并且在某些系统上tcltk卸载后无法重新加载,可能会崩溃R如果尝试这样做。

例子

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 attached.
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 <- deparse1(substitute(db))
   attach(db, pos = pos, name = name)
   print(search()[pos])
   detach(name, character.only = TRUE)
}
attach_and_detach(women, pos = 3)

参考

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

也可以看看

attachlibrarysearchobjectsunloadNamespacelibrary.dynam.unload

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Detach Objects from the Search Path。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。