当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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