library
位於 base
包(package)。 說明
library
和 require
加載並附加 add-on 包。
用法
library(package, help, pos = 2, lib.loc = NULL,
character.only = FALSE, logical.return = FALSE,
warn.conflicts, quietly = FALSE,
verbose = getOption("verbose"),
mask.ok, exclude, include.only,
attach.required = missing(include.only))
require(package, lib.loc = NULL, quietly = FALSE,
warn.conflicts,
character.only = FALSE,
mask.ok, exclude, include.only,
attach.required = missing(include.only))
conflictRules(pkg, mask.ok = NULL, exclude = NULL)
參數
package , help |
包的名稱,以 name 或文字字符串或字符串形式給出,具體取決於 |
pos |
搜索列表上附加加載的命名空間的位置。也可以是當前搜索列表中的位置名稱,如 |
lib.loc |
說明位置的字符向量R要搜索的庫樹,或者 |
character.only |
指示 |
logical.return |
合乎邏輯的。如果是 |
warn.conflicts |
合乎邏輯的。如果 |
verbose |
一個合乎邏輯的。如果是 |
quietly |
一個合乎邏輯的。如果 |
pkg |
命名包的字符串。 |
mask.ok |
對象名稱的字符向量,可以在啟用嚴格衝突檢查時屏蔽搜索路徑上的對象,而不會發出錯誤信號 |
exclude , include.only |
要在附加框架中排除或包含的對象名稱的字符向量。在對 |
attach.required |
邏輯指定是否應自動附加 |
細節
library(package)
和 require(package)
都加載名為 package
的包的命名空間,並將其附加到搜索列表中。 require
設計用於其他函數內部;如果包不存在,它會返回 FALSE
並給出警告(而不是像 library()
默認情況下那樣發出錯誤)。這兩個函數都會檢查並更新當前附加的包的列表,並且不會重新加載已加載的命名空間。 (如果您想重新加載這樣的包,請先調用detach(unload =
TRUE)
或unloadNamespace
。)如果您想加載一個包而不將其附加到搜索列表中,請參閱requireNamespace
。
要在加載包期間抑製消息,請使用suppressPackageStartupMessages
:這將抑製來自的所有消息R本身,但不一定是來自包作者的所有內容。
如果在沒有 package
或 help
參數的情況下調用 library
,它將列出 lib.loc
指定的庫中的所有可用包,並在類 "libraryIQR"
的對象中返回相應信息。 (此類的結構在未來版本中可能會發生變化。)使用 .packages(all = TRUE)
獲取所有可用包的名稱,使用 installed.packages()
獲取更多信息。
library(help = somename)
計算有關包 somename
的基本信息,並將其返回到類 "packageInfo"
的對象中。 (此類的結構在未來版本中可能會發生變化。)當與 lib.loc
的默認值 (NULL
) 一起使用時,將在庫之前搜索附加包。
值
通常 library
返回(不可見)附加包的列表,但如果 logical.return
是 TRUE
,則 TRUE
或 FALSE
。當作為 library()
調用時,它返回類 "libraryIQR"
的對象,對於 library(help=)
,返回類 "packageInfo"
之一。
require
返回(不可見)一個邏輯,指示所需的包是否可用。
衝突
衝突的處理取決於 conflicts.policy
選項的設置。如果未設置此選項,則當參數 warn.conflicts
為 TRUE
時,衝突會導致警告消息。如果該選項設置為字符串 "strict"
,則所有未解決的衝突都會發出錯誤信號。可以使用 library
和 require
的 mask.ok
、 exclude
和 include.only
參數來解決衝突。可以使用 conflictRules
指定 mask.ok
和 exclude
的默認值。
如果 conflicts.policy
選項設置為字符串 "depends.ok"
,則附加聲明的依賴項導致的衝突不會產生錯誤,但其他衝突會產生錯誤。對於大多數想要針對意外衝突提供額外保護的用戶來說,這可能是最佳設置。
可以通過將 conflicts.policy
選項指定為具有以下字段的命名列表來進一步調整策略:
error
:-
邏輯性; if
TRUE
將未解決的衝突視為錯誤。 warn
:-
邏輯性;除非
FALSE
在發現衝突時發出警告消息。 generics.ok
:-
邏輯性; if
TRUE
忽略通過為搜索路徑上的函數定義 S4 泛型而產生的衝突。 depends.ok
:-
邏輯性; if
TRUE
不將與所需包的衝突視為錯誤。 can.mask
:-
允許屏蔽的包名稱的字符向量。這些通常是默認附加的基礎包。
許可證
有些軟件包具有限製性許可證,並且有一種機製可以讓用戶了解此類許可證。如果getOption("checkPackageLicense") == TRUE
,然後首先使用帶有 not-known-to-be-FOSS(見下文)許可證的包的命名空間,要求用戶查看並接受許可證:接受的許可證列表存儲在文件‘~/.R/授權’。在非交互式會話中,使用許可證尚未記錄為已接受的軟件包是錯誤的。
自由或開源軟件(FOSS,例如 https://en.wikipedia.org/wiki/FOSS )包由 available.packages
使用的相同過濾器確定,但僅應用於當前包,而不是其依賴項。
還可以有一個 site-wide 文件‘R_HOME/etc/licensed.site’ 包(每行一個)。
形式化方法
當附加包 methods
時(默認情況下),library
會采取一些進一步的操作。包可以定義正式的泛型函數,也可以在其他包(特別是 base
)中將函數重新定義為泛型,並且隻要在 methods
和重新定義的函數( implicit generic 之後加載這樣的命名空間),就會緩存此信息s) 被排除在衝突列表之外。緩存和檢查衝突需要尋找對象的模式;可以通過在命名空間中定義對象.noGenerics
(具有任何值)來避免搜索。當然,如果包確實有任何此類方法,這將阻止它們被使用。
注意
library
和require
隻能加載/附加已安裝包,這是通過具有‘DESCRIPTION' 包含一個'的文件建造:' 場地。
在 Unix-alikes 下,代碼會檢查該包是否安裝在 R.version$platform
(編譯 R 的平台的規範名稱)給出的類似操作係統下,前提是它包含已編譯的代碼。不包含編譯代碼的包可以在 Unix 類係統之間共享,但不能在其他操作係統之間共享,因為行結尾和特定於操作係統的幫助文件存在潛在問題。如果使用 sub-architectures,則不會檢查操作係統相似性,因為用於構建的操作係統可能不同(例如,i386-pc-linux-gnu
代碼可以在 x86_64-unknown-linux-gnu
操作係統上構建)。
指定的包名稱library
和require
必須與包的‘中給定的名稱匹配DESCRIPTION” 文件準確無誤,即使在不區分大小寫的文件係統(例如 Windows 和 macOS 上常見的文件係統)上也是如此。
例子
library() # list all available packages
library(lib.loc = .Library) # list all packages in the default library
library(help = splines) # documentation on package 'splines'
library(splines) # attach package 'splines'
require(splines) # the same
search() # "splines", too
detach("package:splines")
# if the package name is in a character vector, use
pkg <- "splines"
library(pkg, character.only = TRUE)
detach(pos = match(paste("package", pkg, sep = ":"), search()))
require(pkg, character.only = TRUE)
detach(pos = match(paste("package", pkg, sep = ":"), search()))
require(nonexistent) # FALSE
## Not run:
## if you want to mask as little as possible, use
library(mypkg, pos = "package:base")
## End(Not run)
參考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
attach
, detach
, search
, objects
, autoload
, requireNamespace
, library.dynam
, data
, install.packages
和installed.packages
; INSTALL
、REMOVE
。
相關用法
- R library.dynam 從包中加載 DLL
- R libPaths 包的搜索路徑
- R libcurlVersion libcurl 的報告版本
- R list2DF 從列表創建 DataFrame
- R license R 許可條款
- R list.files 列出目錄/文件夾中的文件
- R list 列表 – 通用和點對
- R list2env 從列表中構建或添加到環境
- R lapply 對列表或向量應用函數
- R levels 級別屬性
- R ls 列出對象
- R lengths 列表或向量元素的長度
- R load 重新加載保存的數據集
- R lower.tri 矩陣的下三角部分和上三角部分
- R log 對數和指數
- R locales 查詢或設置區域設置的各個方麵
- R l10n_info 本地化信息
- R length 物體的長度
- R labels 從對象中查找標簽
- R logical 邏輯向量
- R file.path 構造文件路徑
- R grep 模式匹配和替換
- R getwd 獲取或設置工作目錄
- R vector 向量 - 創建、強製等
- R dump R 對象的文本表示
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Loading/Attaching and Listing of Packages。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。