作者:Joseph Rickert
翻譯:黃小偉懂昂,先后從事游戲介时、社交及金融數(shù)據(jù)研究及應(yīng)用,目前就職杭州有贊
一. 概述
對于R用戶而言凌彬,想找到所需要的R包都是一件極為麻煩的事情沸柔!目前,CRAN已經(jīng)收錄超過13,000個(gè)R包铲敛,而且已每月200左右的速度增加褐澎。但是R包的命名一般都是根據(jù)作者喜好,缺少針對性信息伐蒋,使得通過名稱查詢變得低效乱凿。
針對該問題顽素,R包的開發(fā)者也提供了一些有用的工具,以下針對該方法做簡單介紹徒蟆。
二. 使用說明
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() 支持通過關(guān)鍵詞搜素CRAN上所有R包的元數(shù)據(jù)段审。
假如要進(jìn)行Permutation Tests(置換檢驗(yàn)),可以輸入你能想到的全蝶、最直接的搜索內(nèi)容,比如coin(Thomas Leeper提到過的一個(gè)置換檢驗(yàn)的例子中使用了coin包)寺枉,這也是一個(gè)很清晰的暗示抑淫,你期望在所有結(jié)果中找到帶有coin關(guān)鍵詞的包。
不幸的是姥闪,這個(gè)軟件包非常新始苇,而且沒有詳細(xì)記錄。目前尚不清楚如何計(jì)算SCORE筐喳,DOWNL_TOTAL充滿了NAs催式。 但該功能似乎確實(shí)找到了包。 請注意避归,findPackage()允許用戶設(shè)置權(quán)重參數(shù)荣月,該參數(shù)會影響搜索“如何命中包的標(biāo)題,簡短描述和長描述”梳毙。
下一行代碼只選擇我們將使用的列哺窄。
pt_pkg <- select(pt_pkg, NAME, DESC_SHORT)
現(xiàn)在我們有一個(gè)感興趣的包列表,最好能夠指出所選包的質(zhì)量和實(shí)用性账锹。 有用性的自然衡量標(biāo)準(zhǔn)是下載包的次數(shù)萌业。 為此,我們轉(zhuǎn)向dlstats包中的cran_stats()函數(shù)奸柬。 此函數(shù)將包名稱向量作為輸入生年,查詢RStudio下載日志,并返回一個(gè)數(shù)據(jù)框鸟缕,列出每個(gè)包的月份下載次數(shù)晶框。
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
只需進(jìn)行一些整理就可以生成一個(gè)數(shù)據(jù)框,其中列出了每個(gè)包在其生命周期內(nèi)的總下載量懂从。
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
正如預(yù)期的那樣授段,coin已經(jīng)排到了榜單的首位。 隨著時(shí)間的推移繪制下載量表明該軟件包在過去五年中越來越受歡迎番甩,看起來人們在過去一年左右的時(shí)間里進(jìn)行了大量的置換檢驗(yàn)侵贵。
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))
同時(shí),衡量R包質(zhì)量和可靠性的另一種方法是查看有多少其他軟件包依賴它缘薛。 這些包將在包的CRAN頁面上列為“反向依賴”和“反向?qū)搿鼻嫌ㄟ^鏈接(https://cran.r-project.org/package=coin)卡睦,我們看到coin頁面上的這些字段中列出了24個(gè)包。
同樣地漱抓,了解作者的背景表锻、編寫其他R包的經(jīng)驗(yàn)、可能與之合作的著名R開發(fā)人員等信息乞娄,也有助于評估是否給出新發(fā)現(xiàn)的包是值得一試的瞬逊。 上面的相同鏈接也顯示了包的作者。 檢查R項(xiàng)目的貢獻(xiàn)者頁面仪或,我們看到兩位作者是R Core的成員确镊,背景和合作者不可能更好。
在大多數(shù)情況下范删,背景調(diào)查并不那么容易蕾域。 但是,借助函數(shù)cranly::build_network(),可以輕松跟蹤作者的協(xié)作網(wǎng)絡(luò)。 在這里,我們看到Torston擁有廣泛的合作者網(wǎng)絡(luò)。
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"
知道最多產(chǎn)的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(),但還有更多要探索的內(nèi)容观堂。
CRAN任務(wù)視圖(https://cran.r-project.org/web/views/)也是很有用的督赤,這些是由專家指導(dǎo)的包裝清單,并組織到功能區(qū)域拴清。只要稍加搜索靶病,你就會發(fā)現(xiàn)coin出現(xiàn)在多個(gè)任務(wù)視圖中。