Counting CRAN Package Depends, Imports and LinkingTo
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Depends
.
Far from it, and I immediately replied listing lattice and
Matrix as packages with way more other packages depending upon them.
But as the question seemed deserving of a bit more analysis, I spent a few minutes on this and prepared three charts listing package in order of reverse Depends, reverse Imports and reverse LinkingTo.
First off, the reverse Depends:
. This is the standard means of
declaring a dependence of one package upon another.
Unsurprisingly, the MASS package from the classic Venables and Ripley book comes first, with Deepayan Sarkar‘s powerful lattice package (also covered in a book) coming second. These are both recommended packages which are commonly distributed with R itself. Next are mvtnorm and survival. Our Rcpp is up there in the top-ten, but not a frontrunner.
With the advent of namespaces a few R releases ago, it became possible to
import functions from other packages. So the Imports:
statement
now provides an alternative to the (older) Depends:
. The next
chart displays the same relationship for Imports:
:
Now lattice still leads, but Hadleys’s plyr package grabbed the second spot just before MASS and Matrix.
It is interesting to see that the sheer number of Imports:
is
still not where the Depends:
are. On the other hand, we see a
number of more recent packages popping up in the second chart. This may
reflect more recent coding practices. It will be interesting to see how this
stacks up over time when we revisit this chart.
Lastly, we can also look at LinkingTo:
, a declaration used to
provide a C/C++
-level dependency at the source code level. We use
this in the
Rcpp family to
provide automatic resolution of the header files needed to compile against
our packages. And unsurprisingly, because packages using
Rcpp
actually use its API (rather than R functions), the package is a little ahead
of others. In the package we find three more packages of the
Rcpp
family, but only a limited number of other packages as
C/C++
-level dependencies are still somewhat rare in the R universe.
There are also fewer packages overall making use of this mechanism.
One could of course take this one level further and sum up dependencies in a
recursive manner, or visualize the relationship differently. But these
dotchart
graphs provide a first visual description of the
magnitude of Depends
, Imports
and
LinkingTo
among CRAN packages for R.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.