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


R ns-load 加載和卸載命名空間


R語言 ns-load 位於 base 包(package)。

說明

加載和卸載名稱空間的函數。

用法

attachNamespace(ns, pos = 2L, depends = NULL, exclude, include.only)
loadNamespace(package, lib.loc = NULL,
              keep.source = getOption("keep.source.pkgs"),
              partial = FALSE, versionCheck = NULL,
              keep.parse.data = getOption("keep.parse.data.pkgs"))
requireNamespace(package, ..., quietly = FALSE)
loadedNamespaces()
unloadNamespace(ns)
isNamespaceLoaded(name)

參數

ns

字符串或名稱空間對象。

pos

指定要附加的位置的整數。

depends

NULL 或要記錄在包中的對象 .Depends 中的依賴關係的字符向量。

package

命名要加載的包/名稱空間的字符串。

lib.loc

指定庫搜索路徑的字符向量(R可供搜索的 Library 樹。

keep.source

現在除了軟件包安裝期間之外都被忽略。

keep.parse.data

除軟件包安裝期間外均被忽略。

partial

邏輯性;如果為 true,則在加載代碼後立即停止。

versionCheck

NULL 或版本規範(包含組件 opversion 的列表)。

quietly

邏輯:是否應該抑製進度和錯誤消息?

name

字符串或 ‘name’,請參閱包的 as.symbol ,例如 "stats"

exclude, include.only

字符向量;請參閱library

...

要傳遞給 loadNamespace 的更多參數。

細節

當使用 library 加載名稱空間和所需的任何導入時,通常會隱式調用函數 loadNamespaceattachNamespace。然而,有時直接調用這些函數可能很有用。

loadNamespace 加載指定的名稱空間並將其注冊到內部數據庫中。當名稱空間之一已加載時,加載該名稱空間的請求無效。這些參數與 library 的相應參數具有相同的含義,其幫助頁麵解釋了如何選擇特定安裝包的詳細信息。加載後,loadNamespace 在名稱空間中查找名為.onLoad 的鉤子函數作為內部變量(不應將其導出)。部分加載用於支持延遲加載安裝。

(可選)在加載過程中檢查包許可證:請參閱 library 幫助中的“許可證”部分。

loadNamespace 不會將其加載的名稱空間附加到搜索路徑。 attachNamespace 可用於將包含名稱空間導出值的框架附加到搜索路徑(但這幾乎總是通過 library 完成)。鉤子函數 .onAttach 在附加名稱空間導出後運行。

requireNamespaceloadNamespace 的包裝器,類似於返回邏輯值的 require

loadedNamespaces 返回已加載名稱空間名稱的字符向量。

isNamespaceLoaded(pkg) 相當於 pkg %in% loadedNamespaces() 但效率更高。

unloadNamespace 可用於嘗試強製卸載名稱空間。如果附加了名稱空間,則首先對其進行 detach 編輯,從而在名稱空間中運行 .onDetach.Last.lib 函數(如果導出)。如果名稱空間是由其他加載的名稱空間導入的,則會發出錯誤信號並且不會卸載該名稱空間。如果定義了,則在從內部注冊表中刪除名稱空間之前會運行鉤子函數.onUnload

請參閱 detach 幫助中有關卸載和重新加載名稱空間的一些問題的注釋。

attachNamespace 以不可見的方式返回它添加到搜索路徑的包環境。

loadNamespace 返回名稱空間環境,可以是已加載的環境,也可以是函數導致加載的環境。

requireNamespace 如果成功則返回 TRUEFALSE

loadedNamespaces 返回 character 向量。

unloadNamespace 無形地返回 NULL

追蹤

來自R4.1.0 操作loadNamespace可以追蹤,這可以幫助追蹤意外消息的原因(包括它們來自哪個包)loadNamespace以多種方式調用,包括從自身調用和由::並且可以通過調用load)。設置環境變量_R_TRACE_LOADNAMESPACE_更改為數值將生成有關進度的附加消息。非零值,例如1,報告正在加載哪個名稱空間以及加載完成時:值24報告越來越詳細。負值保留用於跟蹤特定函數,其當前含義記錄在 source-code 注釋中。

加載標準包永遠不會被追蹤。

例子

 (lns <- loadedNamespaces())
 statL <- isNamespaceLoaded("stats")
 stopifnot( identical(statL, "stats" %in% lns) )

 ## The string "foo" and the symbol 'foo' can be used interchangably here:
 stopifnot( identical(isNamespaceLoaded(  "foo"   ), FALSE),
            identical(isNamespaceLoaded(quote(foo)), FALSE),
            identical(isNamespaceLoaded(quote(stats)), statL))

hasS <- isNamespaceLoaded("splines") # (to restore if needed)
Sns <- asNamespace("splines") # loads it if not already
stopifnot(   isNamespaceLoaded("splines"))
if (is.null(try(unloadNamespace(Sns)))) # try unloading the NS 'object'
stopifnot( ! isNamespaceLoaded("splines"))
if (hasS) loadNamespace("splines") # (restoring previous state)

作者

Luke Tierney and R-core

參考

The ‘Writing R Extensions’ manual, section “Package namespaces”.

也可以看看

getNamespaceasNamespacetopenv.onLoad(等);進一步environment

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Loading and Unloading Name Spaces。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。