个性化阅读
专注于IT技术分析

R包:权威入门指南

本文概述

R包是社区开发的功能和数据集的集合。它们通过改进现有的基本R功能或添加新功能来增强R的功能。例如, 如果你通常使用数据帧, 则可能你会听说过dplyr或data.table, 这是两个最受欢迎的R软件包。

但是, 假设你想对韩文进行某种自然语言处理, 从网络中提取天气数据, 或者甚至使用地表能量平衡模型估算实际的蒸散量, R包都可以满足你的要求!最近, 官方存储库(CRAN)已发布了10, 000个软件包, 并且可以通过Internet公开获得更多软件包。

如果你是从R开始的, 那么今天的文章将介绍R软件包的基础知识以及如何使用它们。你将介绍以下主题, 以及11个用户常见问题解答:

  • R软件包的基础知识:什么是软件包, 为什么要将它们的使用纳入你的R体验中?在哪里可以找到包?
  • 安装和用法:如何从CRAN, CRAN镜像, Bioconductor或Github安装软件包?与install.packages()相关的一些函数可用于更新, 删除, …软件包?如何使用用户界面安装软件包?你如何装载包? R中的程序包和库之间有什么区别?如何同时加载多个软件包?如何卸载R包?
  • 文档:除了DESCRIPTION文件外, 文档的其他来源是什么?如何使用它们?
  • 在R软件包之间进行选择:如何找到适合你的分析的软件包?

如果你是经验更丰富的用户, 则可以随时学习新知识(例如我在上一段中刚刚提到的三个软件包的名称)。无论如何, 欢迎阅读R包介绍以及如何使用它们!

1.什么是包?

让我们从一些定义开始。打包是组织你自己的工作并与他人共享(如果你愿意)的一种合适方法。通常, 一个程序包将包括代码(不仅是R代码!), 该程序包的文档和内部功能, 一些用于检查一切正常工作的测试以及数据集。

在Description文件中提供了有关软件包的基本信息, 你可以在其中找到软件包的用途, 作者是谁, 文档所属的版本, 日期, 使用许可证的类型以及软件包的依赖性。

请注意, 你也可以单击此处查看DESCRIPTION文件。

除了找到诸如cran.r-project.org或stat.ethz.ch之类的Description文件之外, 你还可以通过package help(package = “软件包”), 或在线查看软件包的信息库。

例如, 对于”统计”包, 这些方法将是:


packageDescription("stats")
help(package = "stats")

2.什么是存储库?

存储库是软件包所在的位置, 因此你可以从中安装软件包。尽管你或你的组织可能具有本地存储库, 但通常它们是联机的并且每个人都可以访问。 R软件包最受欢迎的三个存储库是:

  • CRAN:官方存储库, 它是由全世界R社区维护的ftp和Web服务器网络。 R基金会对此进行了协调, 对于要在此处发布的软件包, 它需要通过几次测试, 以确保该软件包遵循CRAN策略。你可以在此处找到更多详细信息。
  • Bioconductor:这是一个特定于主题的存储库, 旨在用于生物信息学的开源软件。作为CRAN, 它有自己的提交和审阅过程, 并且其社区非常活跃, 每年召开几次会议。
  • Github:尽管这不是R特有的, 但Github可能是开源项目最受欢迎的存储库。它的流行来自开放源代码的无限空间, 与git, 版本控制软件的集成以及与他人共享和协作的便捷性。但是请注意, 没有与此相关的审核过程。

3.如何安装R软件包

从CRAN安装软件包

如何安装软件包取决于其所在的位置。因此, 对于可公开获得的软件包, 这意味着它属于哪个存储库。最常见的方法是使用CRAN存储库, 然后只需要包的名称并使用命令install.packages(” package”)。

例如, 最早发布于CRAN且仍在线且仍在更新中的软件包是Daniel Adler提供的vioplot软件包。

你能找到它的出版日期吗?提示:在包装说明中;)。

要从CRAN安装它, 你将需要使用:


install.packages("vioplot")

运行此命令后, 你将在屏幕上收到一些消息。它们将取决于你使用的操作系统, 依赖关系以及软件包是否已成功安装。

让我们更深入地了解vioplot安装的输出, 你可能会收到一些消息:


Installing package into ‘/home/username/R/x86_64-pc-linux-gnu-library/3.3’
(as ‘lib’ is unspecified)

这表明软件包在计算机上的安装位置, 并且可以使用lib参数指定其他文件夹位置。


trying URL 'https://cran.rstudio.com/src/contrib/vioplot_0.2.tar.gz'
Content type 'application/x-gzip' length 3801 bytes
==================================================
downloaded 3801 bytes

在这里, 你会收到有关包来源和大小的信息。这将取决于你选择的CRAN镜像。

你也可以对其进行更改, 但是稍后将在本文中阅读有关此内容的更多信息。


* installing *source* package ‘vioplot’ ...
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (vioplot)

这些是安装本身的消息, 源代码, 帮助, 一些测试, 最后是一条消息, 表明一切顺利, 软件包已成功安装。根据你使用的平台, 这些消息可能会有所不同。


The downloaded source packages are in
    ‘/tmp/RtmpqfWbYL/downloaded_packages’

最后一条信息告诉你包中原始文件的位置。使用包不需要它们, 因此通常将它们复制到一个临时文件夹位置。

最后, 要一次安装多个软件包, 只需将它们作为字符向量写在install.packages()函数的第一个参数中:


install.packages(c("vioplot", "MASS"))

从CRAN镜像安装

请记住, CRAN是一个服务器网络(每个服务器称为”镜像”), 因此你可以指定要使用的服务器。如果通过RGui界面使用R, 则可以通过在使用install.packages()命令后出现的列表中选择R来实现。在RStudio上, 默认情况下已选择镜像。

你也可以使用chooseCRANmirror()选择镜像, 或者使用repo参数直接在install.packages()函数内部选择​​镜像。你可以使用getCRANmirrors()或直接在此链接上查看可用镜像的列表。

示例:要使用根特大学图书馆镜像(比利时)来安装vioplot软件包, 可以运行以下命令:


install.packages("vioplot", repo = "https://lib.ugent.be/CRAN/")

安装生物导体包装

对于Bioconductor, 安装软件包的标准方法是首先执行以下脚本:


source("https://bioconductor.org/biocLite.R")

这将安装一些安装生物导体包装所需的基本功能, 例如biocLite()函数。如果要安装Bioconductor的核心软件包, 只需键入它而无需其他参数:


biocLite()

但是, 如果你只对该存储库中的一些特定软件包感兴趣, 则可以直接将其名称键入为字符向量:


biocLite(c("GenomicFeatures", "AnnotationDbi"))

通过devtools安装软件包

如前所述, 每个存储库都有自己的方式来从中安装软件包, 因此, 如果你经常使用来自不同来源的软件包, 则此行为可能会令人沮丧。一种更有效的方法可能是使用devtools软件包来简化此过程, 因为它包含每个存储库(包括CRAN)的特定功能。

你可以使用install.packages(” devtools”)照常安装devtools, 但可能还需要在Windows上安装Rtools, 在Mac上安装Xcode命令行工具, 或在Linux上安装r-base-dev和r-devel。在这里, 你可以获得有关devtools和安装的更多详细信息。

安装devtools之后, 你将可以使用实用程序功能来安装其他软件包。选项包括:

  • 来自Bioconductor的install_bioc(),
  • 来自Bitbucket的install_bitbucket(),
  • 来自CRAN的install_cran(),
  • 从git仓库安装install_git(),
  • 来自GitHub的install_github(),
  • 来自本地文件的install_local(),
  • SVN存储库中的install_svn(),
  • 来自URL的install_url(), 以及
  • 来自特定版本的CRAN软件包的install_version()。

例如, 要从其Github存储库安装babynames软件包, 可以使用:


devtools::install_github("hadley/babynames")

4.如何更新, 删除和检查已安装的软件包

在使用R花费更多的时间后, 通常每周甚至每天使用install.packages()几次, 并且鉴于开发R软件包的速度, 你可能需要早于后来更新或替换你心爱的软件包。在本节中, 你将找到一些可以帮助你管理集合的功能。

  • 要检查计算机上安装了哪些软件包, 可以使用:

installed.packages()
  • 在你的情况下, 使用功能remove.packages()可以直接卸载软件包:

remove.packages("vioplot")
  • 你可以通过调用函数检查哪些软件包需要更新:

old.packages()
  • 你可以使用以下方法更新所有软件包:

update.packages()
  • 但是对于特定的程序包, 只需再次使用:

install.packages("vioplot")

5.是否有用于安装软件包的用户界面?

如果你希望使用图形用户界面(即指向并单击)来安装软件包, 则RStudio和RGui都包括它们。在RStudio中, 可以在”工具”->”安装软件包”中找到它, 然后会出现一个弹出窗口, 以键入要安装的软件包:

R包:入门指南2

在RGui中, 你可以在”软件包”菜单下找到实用程序。

R包:入门指南3

6.如何加载软件包

安装软件包后, 就可以使用其功能了。如果只需要在包中偶尔使用一些函数或数据, 则可以使用packagename :: functionname()表示法访问它们。例如, 由于已经安装了babynames软件包, 因此可以浏览其数据集之一。

你还记得如何查看包装中包含哪些功能和数据的概述吗?

是的, help(package =” babynames”)可以告诉你这一点。

要访问babynames包中的出生数据集, 只需键入:


babynames::births

## # A tibble: 6 x 2
##    year  births
##   <int>   <int>
## 1  2009 4130665
## 2  2010 3999386
## 3  2011 3953590
## 4  2012 3952841
## 5  2013 3932181
## 6  2014 3988076

如果你将更频繁地使用该软件包, 那么可能值得将其加载到内存中。最简单的方法是使用library()命令。

请注意, install.packages()的输入是一个字符向量, 要求名称用引号引起来, 而library()接受字符或名称, 并使你可以编写不带引号的软件包名称。

之后, 你不再需要package :: function()表示法, 并且可以直接访问其功能, 如同其他任何R基函数或数据一样:


births

## # A tibble: 6 x 2
##    year  births
##   <int>   <int>
## 1  2009 4130665
## 2  2010 3999386
## 3  2011 3953590
## 4  2012 3952841
## 5  2013 3932181
## 6  2014 3988076

你可能已经听说过require()函数:确实可以使用此函数加载软件包, 但是不同之处在于, 如果未安装该软件包, 则不会引发错误。

因此, 请谨慎使用此功能!

提示:此处强烈推荐有关此主题的文章

7.包和库之间有什么区别?

说到library()函数, 有时程序包和库之间会有混淆, 你会发现有人将”库”称为程序包。

请不要感到困惑:library()是用于加载程序包的命令, 它是指包含程序包的位置, 通常是计算机上的文件夹, 而程序包是方便捆绑的功能集合。

RStudio首席数据科学家兼” R中的编写功能” srcmini课程的讲师Hadley Wickham的话可能对它有帮助:

@ijlyttle包就像一本书, 图书馆就像图书馆;你使用library()从库中取出软件包#rsats — Hadley Wickham(@hadleywickham)2014年12月8日

此差异的另一个很好的提醒是, 不带参数的情况下运行函数library()。它将为你提供计算机上不同库中安装的软件包列表:


library()

8.如何一次加载多个软件包

尽管你可以仅向install.packages()函数输入名称向量来安装软件包, 但对于library()函数而言, 这是不可能的。你可以一次加载一组软件包, 或者, 如果愿意, 可以使用R用户开发的多种解决方法之一。

你可以在此Stack Overflow讨论, R包和GitHub存储库中找到示例。

9.如何卸载包

要卸载给定的软件包, 可以使用detach()函数。用途将是:


detach("package:babynames", unload=TRUE)

10.文档和帮助的替代来源是什么?

正如你在以上各节中所阅读的那样, DESCRIPTION文件包含有关程序包的基本信息, 即使该信息非常有用, 也无法帮助你使用此程序包进行分析。然后, 你将需要另外两个文档来源:帮助文件和小插图。

帮助文件

与基本R一样, 从软件包开始时, 命令?()和help()是文档的第一个来源。你可能还记得, 可以使用help(package =” packagename”)来获得有关该软件包的一般概述, 但是每个函数都可以通过help(” function name”)或help(function, package =” package” )(如果尚未加载软件包), 则通常会在其中找到该功能及其参数的说明以及一个应用示例。

例如, 你可能还记得, 要从vioplot软件包中获取vioplot命令的帮助文件, 可以输入:


help(vioplot, package = "vioplot")

提示:你还可以使用另一种方法查看已加载的软件包中的内容。通过以下方式使用ls()命令:


library(babynames)
ls("package:babynames")

## [1] "applicants" "babynames"  "births"     "lifetables"

小插图

大多数软件包中包含的另一个非常有用的帮助来源是小插图, 这是作者在其中更详细地显示其某些功能的文档。遵循小插曲是弄清楚软件包的常用用法的好方法, 因此, 这是在进行自己的分析之前开始使用它的理想方法。

你可能还记得, 给定包中包含的小插图的信息也可以在本地或在线的DOCUMENTATION文件中找到, 但是你也可以使用功能browserVignettes()获取给定包中包含的小插图的列表。程序包只包含其名称作为参数:browserVignettes(package =” packagename”)。在这两种情况下, 浏览器窗口都会打开, 因此你可以轻松浏览并单击首选的小插图以将其打开。

如果你希望保留在命令行中, 则vignette()命令将向你显示小插图列表, 小插图(package =” packagename”), 给定程序包中所包含的小程序, 以及在找到所需的程序包之后探索, 只需使用vignette(” vignettename”)命令。

例如, 最流行的可视化软件包之一是ggplot2。你可能已经在计算机上安装了它, 但是如果没有, 这是你这样做并测试新的install.packages()技能的机会。

假设你已经安装了ggplot2, 则可以检查其中包含哪些小插曲:


vignette(package = "ggplot2")

ggplot2有两个小插曲, ” ggplot2-specs”和” extending-ggplot2″。你可以使用以下方法检查第一个:


vignette("ggplot2-specs")

在RStudio上, 这将显示在右侧的”帮助”选项卡上, 而在RGui或命令行中, 这将打开带有小插图的浏览器窗口。

在此链接上, 你可以找到有关从R寻求帮助的更多选项。

11.如何选择合适的R封装

在这一点上, 你应该能够安装R软件包并从中获得最大收益, 但是最后还有一个问题:在哪里可以找到所需的软件包?

发现软件包的典型方法是通过学习R, 在许多教程和课程中通常会提到最受欢迎的软件包。 srcmini课程在这里可以是一个很好的例子:” R中的清洁数据”全面介绍了tidyr, ” R中的数据分析, data.table方式”介绍了data.table包, 等等。

对于你想在R中涉及的每个主题, 可能会有一个有趣的包。

但是, 如果你有特定的问题并且不知道从哪里开始, 例如, 正如我在本文开头的介绍中所述, 那么如果你有兴趣分析一些韩文怎么办?

或者, 如果你想收集一些天气数据怎么办?或估计蒸散量?

你已经审查了几个存储库, 是的, 你知道可以在这里检查CRAN软件包的列表, 但是具有10000多个选项, 很容易丢失。

让我们看看一些替代方案!

由于CRAN任务视图, 一种替代方法是浏览CRAN软件包的类别。那就对了!官方存储库CRAN还为你提供了浏览软件包的选项。任务视图基本上是主题或类别, 它们根据其功能对程序包进行分组。

如下所示, 所有与遗传相关的软件包都将在”遗传”任务视图中分类:

R包指南

以韩文为例, 通过导航至”自然语言处理”任务视图, 可以轻松找到所需的软件包。在这里, 你可以通读文本以找到可以处理文本的软件包, 或者可以执行简单的CTRL + F并键入要查找的关键字。

你将立即获得合适的套餐, 有保证!

查找软件包的另一种选择是RDocumentation, 它是CRAN, BioConductor和GitHub的R软件包的帮助文档聚合器, 它为你提供了一个直接在主页上准备好你的请求的搜索框。

你可能还不知道第二种选择, 所以让我们深入一点吧!

让我们从韩文文本开始, RDocumentation的一个有趣功能是快速搜索, 因此当你键入一些最初的结果时:

R中的包

但是, 如果你输入关键字” korean”并单击” Search”, 我们将进行全面搜索, 你将看到两列结果:左侧的软件包和右侧的函数。

重点关注”包”列, 对于每个结果, 你都将获得包的名称, 并带有指向更详细信息的链接, 作者的姓名, 还可以链接以查看来自同一作者的其他包, 以及有关搜索的包的一些说明突出显示单词, 以及有关包装受欢迎程度的信息。

R包:入门指南6

说到受欢迎程度, 这很重要, 因为搜索将首先将下载最多的软件包排在第一位, 从而提高结果的相关性。如果你想了解有关RDocumentation的搜索实现的更多详细信息, 请在此处发表一篇非常详细的文章。

因此, 似乎KoNLP软件包可以满足你的需求, 单击其名称后, 你将获得以下信息:

  • 标头, 其中包含软件包名称, 作者, 版本, 选择较旧版本的选项, 下载次数以及指向其RDocumentation页的链接。
  • 程序包的描述。
  • 包中包含的功能列表, 每个功能都可以单击, 因此你可以获得有关该功能使用的更多详细信息。你还将获得一个搜索框, 你可以在其中快速访问所需的功能。
  • 随着下载数量的演变而变化的图。
  • 包的详细信息以及DESCRIPTION文件中的信息。
  • 最后, 可以在包的README文件中包含一个带有RDocumentation链接的徽章。

RDocumentation不仅是搜索引擎, 它还为你提供了一些不错的选择来发现和了解R包和功能:

  • 就像CRAN任务视图一样, RDocumentation也提供任务视图:就像你在上面阅读的内容一样, 这是按主题探索R包的另一种方法。例如, 你可以获取与图形, 财务或时间序列等相关的软件包的列表。
  • 排行榜。此模式为你提供了最受欢迎的软件包和开发人员, 最新的软件包和更新的概述, 以及三个带有下载分布, 最常用的键盘和最上面的软件包依存关系图的图, 你可以在其中查看最流行的软件包的相关性彼此之间, 你可以找到一组包装(用不同的颜色标识)。
R包:入门指南7
  • RDocumentation程序包。 RDocumentation不仅是网站, 而且是R包。它覆盖了帮助功能, 因此你可以将RDocumentation的功能整合到你的工作流程中。加载此程序包后, help()函数将打开浏览器窗口或具有RDocumentation访问权限的RStudio帮助面板。

与网站使用相比, 直接在R或RStudio面板上使用RDocumentation可以为你带来一些优势:

  • 检查软件包的安装版本。软件包的帮助窗格将为你提供与网页相同的信息(下载, 说明, 功能列表, 详细信息), 以及有关软件包已安装版本的信息。

例如, 检查以前安装的vioplot软件包:


install.packages("RDocumentation")
library(RDocumentation)
help(package = "vioplot")
R包:入门指南8
  • 能够直接从帮助面板安装或更新软件包。我知道你现在是安装软件包的专家, 但是在这里, 你还有另一种选择, 方法是单击RDocumentation提供的帮助面板上的一个按钮。

remove.packages("vioplot")
help(package = "vioplot")
R包:入门指南9
  • 运行并提出示例。包中功能的帮助窗格将为你提供选项, 只需单击一个按钮即可再次运行示例。你还可以提出一些示例, 这些示例可以并入帮助页面并由其他R用户进行测试。

install.packages("vioplot")
help(vioplot)
R包:入门指南10
  • RDocumentation API最后, RDocumentation不仅是网站和R包, 还是API。对于需要更高灵活性的更高级用户, RDocumentation.org提供了具有其网页功能的JSON API。

结论

今天的文章涵盖了广泛的技术和功能, 可以通过使用软件包从R中获得最大收益。与往常一样, 在R中执行特定任务的方法不只一种, 而且管理软件包也不例外。

我希望今天你了解了发现, 安装, 加载, 更新, 获得帮助或删除软件包的最常用的方法。

我知道这篇文章并没有涵盖有关软件包内部结构或如何创建自己的软件包的太多细节。敬请关注srcmini的博客以及有关这些主题和其他相关主题的课程, 但与此同时, 你可以在此处找到” R包”一书, 这是一个很好的参考。

啊!而且我几乎忘记了, 如果你尚未通过搜索RDocumentation来发现它, 我可以告诉你, 使用weatherData可以从互联网上提取天气数据, 并且如果你对蒸散感兴趣, 也许你应该看看蒸散, 水或SPEI软件包。

赞(0)
未经允许不得转载:srcmini » R包:权威入门指南

评论 抢沙发

评论前必须登录!