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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。