R是一门著名的可用于数据和统计分析的程序语言,本文翻译自R软件官方文档教程《An Introduction to R》,仅供学习和参考。
13 包
所有 R 函数和数据集都存储在package
(包)中。只有当一个包被加载时,它的内容才可用。这样做既是为了提高效率(与子集相比,完整列表将占用更多内存并且搜索时间更长),也是为了帮助包开发人员,避免与其他代码发生名称冲突。在这里,我们将从用户的角度来描述包。
要查看您的站点上安装了哪些包,请发出命令
> library()
加载特定包(例如,boot
(https://CRAN.R-project.org/package=boot) 包含 Davison & Hinkley (1997)编写的一些函数),使用如下命令
> library(boot)
连接到互联网的用户可以使用 install.packages()
和 update.packages()
函数(可通过 Windows 和 macOS GUI 中的“package”菜单获得)来安装和更新包.
要查看当前加载了哪些包,请使用
> search()
显示搜索列表。某些包可能已加载但在搜索列表中不可用:它们将包含在由
> loadedNamespaces()
要查看已安装包中所有可用帮助主题的列表,请使用
> help.start()
来启动 HTML 帮助系统,然后导航到“Reference”部分中的包列表
13.1 标准包
标准(base
)包被视为 R 源代码的一部分。它们包含允许 R 工作的基本函数,以及本手册中描述的数据集和标准统计和图形函数。它们应该在任何 R 安装中自动可用。有关完整列表,请参阅 R FAQ 中的“R packages”部分。
13.2 贡献包和CRAN
有数以千计的 R 贡献包,由许多不同的作者编写。其中一些软件包实现了专门的统计方法,另一些提供了对数据或硬件的访问权限,还有一些旨在补充教科书。一些(推荐的包)随 R 的每个二进制发行版一起分发。大多数都可以从 CRAN(https://CRAN.R-project.org/ 及其镜像)和其他存储库(例如 Bioconductor(https:// www.bioconductor.org/)。 R FAQ包含发布时最新的 CRAN 包列表,但可用包的集合变化非常频繁。
13.3 命名空间
包有命名空间,它做三件事:它们允许包编写者隐藏仅供内部使用的函数和数据;当用户(或其他包编写者)选择一个与包中的名称冲突的名称时,它们防止函数被破坏;它们提供了一种在特定包中引用对象的方法。
例如,t()
是 R 中的转置函数,但用户可以定义自己的名为 t 的函数。命名空间阻止用户的定义优先,并破坏试图转置矩阵的每个函数。
有两个运算符可以处理命名空间。双冒号运算符 ::
从特定名称空间中选择定义。在上面的示例中,转置函数将始终作为 base::t
提供,因为它是在基础包中定义的。不过这种方式只能访问包中的函数。
三冒号运算符 :::
可能会在 R 代码中的几个地方看到:它的作用类似于双冒号运算符,但也允许访问隐藏的对象。用户更有可能使用 getAnywhere()
函数,该函数搜索多个包。
包通常是相互依赖的,加载一个包可能会导致自动加载其他包。上面描述的冒号运算符也会导致相关包的自动加载。当自动加载带有命名空间的包时,它们不会添加到搜索列表中。