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 |
|
package |
命名要加載的包/名稱空間的字符串。 |
lib.loc |
指定庫搜索路徑的字符向量(R可供搜索的 Library 樹。 |
keep.source |
現在除了軟件包安裝期間之外都被忽略。 |
keep.parse.data |
除軟件包安裝期間外均被忽略。 |
partial |
邏輯性;如果為 true,則在加載代碼後立即停止。 |
versionCheck |
|
quietly |
邏輯:是否應該抑製進度和錯誤消息? |
name |
字符串或 ‘name’,請參閱包的 |
exclude, include.only |
字符向量;請參閱 |
... |
要傳遞給 |
細節
當使用 library
加載名稱空間和所需的任何導入時,通常會隱式調用函數 loadNamespace
和 attachNamespace
。然而,有時直接調用這些函數可能很有用。
loadNamespace
加載指定的名稱空間並將其注冊到內部數據庫中。當名稱空間之一已加載時,加載該名稱空間的請求無效。這些參數與 library
的相應參數具有相同的含義,其幫助頁麵解釋了如何選擇特定安裝包的詳細信息。加載後,loadNamespace
在名稱空間中查找名為.onLoad
的鉤子函數作為內部變量(不應將其導出)。部分加載用於支持延遲加載安裝。
(可選)在加載過程中檢查包許可證:請參閱 library
幫助中的“許可證”部分。
loadNamespace
不會將其加載的名稱空間附加到搜索路徑。 attachNamespace
可用於將包含名稱空間導出值的框架附加到搜索路徑(但這幾乎總是通過 library
完成)。鉤子函數 .onAttach
在附加名稱空間導出後運行。
requireNamespace
是 loadNamespace
的包裝器,類似於返回邏輯值的 require
。
loadedNamespaces
返回已加載名稱空間名稱的字符向量。
isNamespaceLoaded(pkg)
相當於 pkg %in% loadedNamespaces()
但效率更高。
unloadNamespace
可用於嘗試強製卸載名稱空間。如果附加了名稱空間,則首先對其進行 detach
編輯,從而在名稱空間中運行 .onDetach
或 .Last.lib
函數(如果導出)。如果名稱空間是由其他加載的名稱空間導入的,則會發出錯誤信號並且不會卸載該名稱空間。如果定義了,則在從內部注冊表中刪除名稱空間之前會運行鉤子函數.onUnload
。
請參閱 detach
幫助中有關卸載和重新加載名稱空間的一些問題的注釋。
值
attachNamespace
以不可見的方式返回它添加到搜索路徑的包環境。
loadNamespace
返回名稱空間環境,可以是已加載的環境,也可以是函數導致加載的環境。
requireNamespace
如果成功則返回 TRUE
或 FALSE
。
loadedNamespaces
返回 character
向量。
unloadNamespace
無形地返回 NULL
。
追蹤
來自R4.1.0 操作loadNamespace
可以追蹤,這可以幫助追蹤意外消息的原因(包括它們來自哪個包)loadNamespace
以多種方式調用,包括從自身調用和由::
並且可以通過調用load
)。設置環境變量_R_TRACE_LOADNAMESPACE_更改為數值將生成有關進度的附加消息。非零值,例如1
,報告正在加載哪個名稱空間以及加載完成時:值2
到4
報告越來越詳細。負值保留用於跟蹤特定函數,其當前含義記錄在 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”.
也可以看看
相關用法
- R ns-dblcolon 雙冒號和三冒號運算符
- R ns-internals 命名空間內部結構
- R ns-reflect 命名空間反射支持
- R ns-hooks 命名空間事件的鉤子
- R ns-topenv 頂級環境
- R noquote “無引號”字符串打印類
- R numeric 數值向量
- R numeric_version 數字版本
- R nargs 函數的參數數量
- R normalizePath 以規範形式表達文件路徑
- R nchar 計算字符數(或字節數或寬度)
- R norm 計算矩陣的範數
- R name 名稱和符號
- R nrow 數組的行/列數
- R names 對象的名稱
- R nlevels 因子的水平數
- R file.path 構造文件路徑
- R grep 模式匹配和替換
- R getwd 獲取或設置工作目錄
- R vector 向量 - 創建、強製等
- R lapply 對列表或向量應用函數
- R dump R 對象的文本表示
- R Sys.getenv 獲取環境變量
- R rank 樣本排名
- R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Loading and Unloading Name Spaces。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。