我一直在尋找各類方法來查找有關R包的信息,但我最近才瞭解CRAN_package_db()了基本tools包中的函數。若是一位同事沒有向我指出,我確信我永遠不會本身找到它。json
當被調用時,這個函數發送到由環境變量指定的CRAN鏡像,R_CRAN_WEB並返回一個數據幀,其中包含有關CRAN上當前每一個包的大量信息。它是元數據的寶庫。app
使用返回的信息可能須要一點數據糾纏。在這篇文章中,我將展現一些我準備好的關於個人rstudio :: conf 2018談話的一些清理(但很是優雅)的版本,什麼是一個偉大的R包?做爲處理角色數據的一個例子。我有興趣瞭解編寫典型R包所需的協做感,以及感覺其餘包開發人員對包的適用性。我選擇進行協做的代理是每一個軟件包列出的做者數量。我對其餘軟件包開發人員有用的代理是反向依賴和反向導入的聯合。框架
我作的第一件事是選擇數據框的一個子集來處理。curl
## Observations: 12,123## Variables: 6## $ Package"A3", "abbyyR", "abc", "abc.data", "ABC.RAP", "ABCanal...## $ Dep"R (>= 2.15.0), xtable, pbapply", "R (>= 3.2.0)", "R (...## $ ImpNA, "httr, XML, curl, readr, plyr, progress", NA, NA, ...## $ Aut"Scott Fortmann-Roe", "Gaurav Sood [aut, cre]", "Csill...## $ RDNA, NA, "abctools, EasyABC", "abc", NA, NA, NA, NA, NA...## $ RI NA, NA, "ecolottery", NA, NA, NA, NA, NA, NA, NA, NA, ...
請注意,在這篇文章中,我正在使用我剛剛講話以前從CRAN提取的一個文件中的數據,但您應該沒有任何問題CRAN_package_db()來獲取更新的數據集。函數
接下來我作的是向數據集中添加兩個新變量:DepImp依賴包和導入包RDRI的聯合,以及反向聯合依賴並反向導入包。url
另外,事實證實,做者字段須要一些工做,以便從做者字符串中刪除像「[aut,cre]」和「[ctb,cph]」這樣的限定性文本。spa
一旦我有了一些乾淨的文本,我使用瞭如下代碼的很是混亂的初步版原本獲取我正在查找的計數數據。請注意,派生的特性DepImp以及RDRI須要的某些預處理與從我選擇的其餘特性中提取計數所需的預處理不一樣。在這裏,我作了一件很是不整潔的事情,並建立了兩個初步的數據框架 - 效率不高,但對我來講更容易完成和調試。代理
## Package Aut Dep Imp RD RI DepImp RDRI## 1 A3 1 3 0 0 0 3 0## 2 abbyyR 1 1 6 0 0 7 0## 3 abc 4 6 0 2 1 6 3## 4 abc.data 4 1 0 1 0 1 1## 5 ABC.RAP 4 1 3 0 0 4 0## 6 ABCanalysis 3 1 1 0 0 2 0
一旦我有了清晰的數據,計算一些簡單的統計數據就變得微不足道了。在這裏,咱們看到手段和中位數的數字很小,可是反向依賴和反向進口以及它們的聯合的標準誤差反映了至關大的差別。調試
## Features mean sd median## 1 Aut 2.25 2.73 1## 2 Dep 1.53 1.57 1## 3 Imp 2.85 3.89 1## 4 RD 0.81 9.09 0## 5 RI 2.30 23.23 0## 6 DepImp 4.37 4.06 3## 7 RDRI 3.11 30.79 0
在A一目瞭然RDRI位數代表,這種變化是因爲比較少的包。直方圖表示很長的尾巴。code
## 0% 25% 50% 75% 100%## 0 0 0 0 1239 ## Warning: Removed 4 rows containing non-finite values (stat_bin). ## Warning: Removed 1 rows containing missing values (geom_bar).
對RDRI字段進行排序可找到前15個最集成的軟件包。由此,個人意思是最依賴或由其餘軟件包導入的軟件包。
## Package Aut DepImp RDRI## 1 Rcpp 7 3 1239## 2 MASS 6 6 1157## 3 MASS 6 6 1157## 4 ggplot2 3 11 1149## 5 dplyr 5 12 716## 6 Matrix 13 7 680## 7 Matrix 13 7 680## 8 plyr 1 2 555## 9 stringr 2 3 500## 10 mvtnorm 9 3 483## 11 magrittr 1 0 454## 12 survival 2 7 434## 13 survival 2 7 434## 14 jsonlite 3 1 426## 15 httr 2 6 420
最後,查看做者領域的分位數和直方圖給出了一些合做的想法。大多數軟件包的做者少於三位,代表只有很是適度的協做。
## 0% 25% 50% 75% 100%## 1 1 1 3 97 ## Warning: Removed 9 rows containing non-finite values (stat_bin).
我但願提供的軟件包元數據的簡單可用性CRAN_package_db()將激發一些分析R軟件包特性的認真工做。