内容简介:作者:Joseph Rickert翻译:黄小伟,先后从事游戏、社交及金融数据研究及应用,目前就职杭州有赞一. 概述
作者:Joseph Rickert
翻译:黄小伟,先后从事游戏、社交及金融数据研究及应用,目前就职杭州有赞
一. 概述
对于R用户而言,想找到所需要的R包都是一件极为麻烦的事情!目前,CRAN已经收录超过13,000个R包,而且已每月200左右的速度增加。但是R包的命名一般都是根据作者喜好,缺少针对性信息,使得通过名称查询变得低效。
针对该问题,R包的开发者也提供了一些有用的工具,以下针对该方法做简单介绍。
二. 使用说明
library(tidyverse)
## ── Attaching packages ─── tidyverse 1.2.1 ──
## ✔ ggplot2 2.2.1 ✔ purrr 0.2.4
## ✔ tibble 1.4.2 ✔ dplyr 0.7.5
## ✔ tidyr 0.8.1 ✔ stringr 1.3.1
## ✔ readr 1.1.1 ✔ forcats 0.3.0
## ── Conflicts ──── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
library(packagefinder)
library(dlstats)
library(cranly)
packagefinder在7月份收录于CRAN,主要功能是帮助R使用者找到能够解决燃眉之急的R包。packagefinder::findPackage() 支持通过关键词搜素CRAN上所有R包的元数据。
假如要进行Permutation Tests(置换检验),可以输入你能想到的、最直接的搜索内容,比如coin(Thomas Leeper提到过的一个置换检验的例子中使用了coin包),这也是一个很清晰的暗示,你期望在所有结果中找到带有coin关键词的包。
不幸的是,这个软件包非常新,而且没有详细记录。目前尚不清楚如何计算SCORE,DOWNL_TOTAL充满了NAs。 但该功能似乎确实找到了包。 请注意,findPackage()允许用户设置权重参数,该参数会影响搜索“如何命中包的标题,简短描述和长描述”。
下一行代码只选择我们将使用的列。
pt_pkg <- select(pt_pkg, NAME, DESC_SHORT)
现在我们有一个感兴趣的包列表,最好能够指出所选包的质量和实用性。 有用性的自然衡量标准是下载包的次数。 为此,我们转向dlstats包中的cran_stats()函数。 此函数将包名称向量作为输入,查询RStudio下载日志,并返回一个数据框,列出每个包的月份下载次数。
pt_downloads <- cran_stats(pt_pkg$NAME)
dim(pt_downloads)
## [1] 2784 4
head(pt_downloads)
## start end downloads package
## 4485 2018-05-01 2018-05-31 52 permutes
## 4544 2018-06-01 2018-06-30 89 permutes
## 4603 2018-07-01 2018-07-31 92 permutes
## 4662 2018-08-01 2018-08-31 74 permutes
## 4721 2018-09-01 2018-09-30 227 permutes
## 4780 2018-10-01 2018-10-22 142 permutes
只需进行一些整理就可以生成一个数据框,其中列出了每个包在其生命周期内的总下载量。
top_downloads <- pt_downloads %>% group_by(package) %>%
summarize(downloads = sum(downloads)) %>%
arrange(desc(downloads))
head(top_downloads,10)
## # A tibble: 10 x 2 ## package downloads
## <fct> <int>
## 1 coin 1103426
## 2 exactRankTests 137674
## 3 RVAideMemoire 108837
## 4 perm 97071
## 5 logcondens 83033
## 6 HardyWeinberg 55735
## 7 biotools 47694
## 8 smacof 45257
## 9 SNPassoc 38920
## 10 broman 30956
正如预期的那样,coin已经排到了榜单的首位。 随着时间的推移绘制下载量表明该软件包在过去五年中越来越受欢迎,看起来人们在过去一年左右的时间里进行了大量的置换检验。
top_pkgs <- pt_downloads %>% filter(package %in% top_downloads$package[1:3])
ggplot(top_pkgs, aes(end, downloads, group=package, color=package)) + geom_line() + geom_point(aes(shape=package))
同时,衡量R包质量和可靠性的另一种方法是查看有多少其他软件包依赖它。 这些包将在包的CRAN页面上列为“反向依赖”和“反向导入”,通过链接( https://cran.r-project.org/package=coin ),我们看到coin页面上的这些字段中列出了24个包。
同样地,了解作者的背景、编写其他R包的经验、可能与之合作的着名R开发人员等信息,也有助于评估是否给出新发现的包是值得一试的。 上面的相同链接也显示了包的作者。 检查R项目的贡献者页面,我们看到两位作者是R Core的成员,背景和合作者不可能更好。
在大多数情况下,背景调查并不那么容易。 但是,借助函数cranly::build_network(),可以轻松跟踪作者的协作网络。 在这里,我们看到Torston拥有广泛的合作者网络。
p_db <- tools::CRAN_package_db()
clean_p_db <- clean_CRAN_db(p_db)
author_net <- build_network(object = clean_p_db, perspective = "author")
plot(author_net, author = "Torsten Hothorn", exact = FALSE)
cranly collaboration network
CRAN database version
Mon, 22 Oct 2018, 11:52
Author names with
"Torsten Hothorn"
Package names with
"Inf"
知道最多产的CRAN包作者是谁也是有帮助的。
author_summary <- summary(author_net)
## Warning in closeness(cranly_graph, normalized = FALSE): At centrality.c:
## 2784 :closeness centrality is not well-defined for disconnected graphs
plot(author_summary)
以前的文章更深入地探讨了cranly包和tools:: CRAN_package_db(),但还有更多要探索的内容。
CRAN任务视图( https://cran.r-project.org/web/views/ )也是很有用的,这些是由专家指导的包装清单,并组织到功能区域。只要稍加搜索,你就会发现coin出现在多个任务视图中。
本文由R语言中文社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。
以上所述就是小编给大家介绍的《如何搜索你想要的R包?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 总是搜不到想要的内容?Elasticsearch搜索排名优化了解一下
- 调查显示雇主想要 JavaScript 而开发者想要 Python
- 前端想要了解的Nginx
- 抖音推新品“抖店”:想要导流线下
- 想要做读写分离,送你一些小经验
- 我不想优化VM,只想要eval
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。