當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。