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


R library 加載/附加和列出包


R語言 library 位於 base 包(package)。

說明

libraryrequire 加載並附加 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 或文字字符串或字符串形式給出,具體取決於 character.onlyFALSE (默認)還是 TRUE

pos

搜索列表上附加加載的命名空間的位置。也可以是當前搜索列表中的位置名稱,如 search() 給出的。

lib.loc

說明位置的字符向量R要搜索的庫樹,或者NULL.默認值為NULL對應於目前已知的所有庫.libPaths()。不存在的庫樹會被默默地忽略。

character.only

指示packagehelp 是否可以被假定為字符串的邏輯。

logical.return

合乎邏輯的。如果是TRUE,則返回FALSETRUE,表示成功。

warn.conflicts

合乎邏輯的。如果 TRUE ,則會打印有關附加新包的 conflicts 的警告。衝突是函數屏蔽函數,或者非函數屏蔽非函數。除非在 conflicts.policy 選項中指定為 FALSE,否則默認值為 TRUE

verbose

一個合乎邏輯的。如果是 TRUE ,則會打印附加診斷信息。

quietly

一個合乎邏輯的。如果 TRUE ,則不會打印確認包附加的消息,並且最常見的是,如果包附加失敗,則不會打印任何錯誤/警告。

pkg

命名包的字符串。

mask.ok

對象名稱的字符向量,可以在啟用嚴格衝突檢查時屏蔽搜索路徑上的對象,而不會發出錯誤信號

exclude , include.only

要在附加框架中排除或包含的對象名稱的字符向量。在對 libraryrequire 的調用中隻能使用這些參數之一。

attach.required

邏輯指定是否應自動附加 DESCRIPTION 文件的 Depends 子句中列出的所需包。

細節

library(package)require(package) 都加載名為 package 的包的命名空間,並將其附加到搜索列表中。 require 設計用於其他函數內部;如果包不存在,它會返回 FALSE 並給出警告(而不是像 library() 默認情況下那樣發出錯誤)。這兩個函數都會檢查並更新當前附加的包的列表,並且不會重新加載已加載的命名空間。 (如果您想重新加載這樣的包,請先調用detach(unload = TRUE)unloadNamespace。)如果您想加載一個包而不將其附加到搜索列表中,請參閱requireNamespace

要在加載包期間抑製消息,請使用suppressPackageStartupMessages:這將抑製來自的所有消息R本身,但不一定是來自包作者的所有內容。

如果在沒有 packagehelp 參數的情況下調用 library ,它將列出 lib.loc 指定的庫中的所有可用包,並在類 "libraryIQR" 的對象中返回相應信息。 (此類的結構在未來版本中可能會發生變化。)使用 .packages(all = TRUE) 獲取所有可用包的名稱,使用 installed.packages() 獲取更多信息。

library(help = somename) 計算有關包 somename 的基本信息,並將其返回到類 "packageInfo" 的對象中。 (此類的結構在未來版本中可能會發生變化。)當與 lib.loc 的默認值 (NULL ) 一起使用時,將在庫之前搜索附加包。

通常 library 返回(不可見)附加包的列表,但如果 logical.returnTRUE ,則 TRUEFALSE 。當作為 library() 調用時,它返回類 "libraryIQR" 的對象,對於 library(help=) ,返回類 "packageInfo" 之一。

require 返回(不可見)一個邏輯,指示所需的包是否可用。

衝突

衝突的處理取決於 conflicts.policy 選項的設置。如果未設置此選項,則當參數 warn.conflictsTRUE 時,衝突會導致警告消息。如果該選項設置為字符串 "strict" ,則所有未解決的衝突都會發出錯誤信號。可以使用 libraryrequiremask.okexcludeinclude.only 參數來解決衝突。可以使用 conflictRules 指定 mask.okexclude 的默認值。

如果 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(具有任何值)來避免搜索。當然,如果包確實有任何此類方法,這將阻止它們被使用。

注意

libraryrequire隻能加載/附加已安裝包,這是通過具有‘DESCRIPTION' 包含一個'的文件⁠建造:⁠' 場地。

在 Unix-alikes 下,代碼會檢查該包是否安裝在 R.version$platform(編譯 R 的平台的規範名稱)給出的類似操作係統下,前提是它包含已編譯的代碼。不包含編譯代碼的包可以在 Unix 類係統之間共享,但不能在其他操作係統之間共享,因為行結尾和特定於操作係統的幫助文件存在潛在問題。如果使用 sub-architectures,則不會檢查操作係統相似性,因為用於構建的操作係統可能不同(例如,i386-pc-linux-gnu 代碼可以在 x86_64-unknown-linux-gnu 操作係統上構建)。

指定的包名稱libraryrequire必須與包的‘中給定的名稱匹配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.

也可以看看

.libPaths.packages

attach , detach , search , objects , autoload , requireNamespace , library.dynam , data , install.packagesinstalled.packagesINSTALLREMOVE

附加的初始包集由 options(defaultPackages=) 設置:另請參閱 Startup

相關用法


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