原文链接:http://tecdat.cn/?p=3050
我一直在寻找各种方法来查找有关R包的信息,但我最近才了解CRAN\_package\_db()了基本tools包中的函数。如果一位同事没有向我指出,我确信我永远不会自己找到它。
当被调用时,这个函数发送到由环境变量指定的CRAN镜像,R\_CRAN\_WEB并返回一个数据帧,其中包含有关CRAN上当前每个包的大量信息。它是元数据的宝库。
作为处理角色数据的一个例子。我有兴趣了解编写典型R包所需的协作感,以及感受其他包开发人员对包的适用性。我选择进行协作的代理是每个软件包列出的作者数量。我对其他软件包开发人员有用的代理是反向依赖和反向导入的联合。
我做的第一件事是选择数据框的一个子集来处理。
## 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, ...
另外,事实证明,作者字段需要一些工作,以便从作者字符串中删除像“[aut,cre]”和“[ctb,cph]”这样的限定性文本。
一旦我有了一些干净的文本,我使用了以下代码的非常混乱的初步版本来获取我正在查找的计数数据。请注意,派生的特性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位数表明,这种变化是由于比较少的包。直方图表示很长的尾巴。
## 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).
## 0% 25% 50% 75% 100%## 1 1 1 3 97
## Warning: Removed 9 rows containing non-finite values (stat_bin).
```

我希望提供的软件包元数据的简单可用性CRAN_package_db()将激发一些分析R软件包特性的认真工作。