R packages are extensions to the R statistical programming language. R packages contain code, data, and documentation in a standardised collection format that can be installed by users of R, typically via a centralised software repository such as CRAN (the Comprehensive R Archive Network).[1][2] The large number of packages available for R, and the ease of installing and using them, has been cited as a major factor in driving the widespread adoption of the language in data science.[3][4][5][6]

Compared to libraries in other programming language, R packages must conform to a relatively strict specification.[3] The Writing R Extensions manual[7] specifies a standard directory structure for R source code, data, documentation, and package metadata, which enables them to be installed and loaded using R's in-built package management tools.[3] Packages distributed on CRAN must meet additional standards.[3][8] According to John Chambers, whilst these requirements "impose considerable demands" on package developers, they improve the usability and long-term stability of packages for end users.[3]


Comprehensive R Archive Network (CRAN)

The Comprehensive R Archive Network (CRAN) is R's central software repository, supported by the R Foundation.[9] It contains an archive of the latest and previous versions of the R distribution, documentation, and contributed R packages.[10] It includes both source packages and pre-compiled binaries for Windows and macOS.[11] As of November 2020, more than 16,000 packages are available.[12] CRAN was created by Kurt Hornik and Friedrich Leisch in 1997,[13][14] with the name paralleling other early packing systems such as TeX's CTAN (released 1992) and Perl's CPAN (released 1995).[15] As of 2021, it is still maintained by Hornik and a team of volunteers.[9] The master site is located at the Vienna University of Economics and Business and is mirrored on servers around the world.[10]

The "Task Views" page (subject list) on the CRAN website[16] lists a wide range of tasks (in fields such as Finance, Genetics, High Performance Computing, Machine Learning, Medical Imaging, Social Sciences and Spatial Statistics) for which R packages are available. Another way to browse CRAN packages is provided by Metacran,[17] which also maintains lists of featured, most downloaded, trending or most depended upon packages.

The number of CRAN packages has grown exponentially for many years,[18] and as of 2018 an average of 21 submissions of new or updated packages were made every day.[6] Since each submission is manually reviewed by a small team of CRAN maintainers, many of whom, according to R core developer Peter Dalgaard, are "approaching pensionable age", there is a concern that this system is not sustainable in the long term.[6] The growth of CRAN has exposed limitations of its dependency management infrastructure, particularly the fact that it assumes that dependencies always refer to the latest version of a package, meaning that new releases of CRAN packages must always be backwards compatible,[19] and that CRAN packages cannot have dependencies that are not on CRAN.[20] It has also led to concerns about declining quality of packages.[21]

MRAN and RStudio Package Manager

The Microsoft R Application Network (MRAN) is a mirror of CRAN maintained by Microsoft which is based on the company's downstream distribution of R, Microsoft R Open (formerly Revolution R Open).[22] It also includes an archive of daily CRAN snapshots, branded as the "CRAN Time Machine", which enables users of MRAN to bypass the dependency versioning limitations of CRAN by installing a fixed set of R package versions via the package checkpoint.[23][24]

RStudio Package Manager is a similar tool produced by RStudio, which in addition to CRAN snapshots includes an archive of R packages from Bioconductor and Python packages from the Python Package Index.[25] It also distributes pre-compiled binary packages for Linux (only Windows and macOS binaries are included on CRAN).[26]

Other repositories

The Bioconductor project provides R packages for the analysis of genomic data. This includes object-oriented data-handling and analysis tools for data from Affymetrix, cDNA microarray, and next-generation high-throughput sequencing methods.[27]

R-Forge,[28] is a central platform for the collaborative development of R packages, R-related software, and projects. R-Forge also hosts many unpublished beta packages, and development versions of CRAN packages.

Base and recommended packages

R is distributed with fourteen "base packages": base, compiler, datasets, grDevices, graphics, grid, methods, parallel, splines, stats, stats4, tcltk, tools, and utils.[29]

In addition, there are fifteen "recommended packages" from CRAN which are included with binary distributions of R: KernSmooth, MASS, Matrix, boot, class, cluster, codetools, foreign, lattice, mgcv, nlme, nnet, rpart, spatial, and survival.[29]

Other packages

A group of packages called the Tidyverse, which can be considered a "dialect of the R language", is increasingly popular in the R ecosystem. As of 2020-06-13, Metacran[17] listed 7 of the 8 core packages of the Tidyverse in the list of most download R packages. The group of packages strives to provide a cohesive collection of functions to deal with common data science tasks, including data import, cleaning, transformation and visualisation (notably with the ggplot2 package).

The R Infrastructure packages[30] support coding and the development of R packages and as of 2021-05-04, Metacran[17] lists 16 of these packages among the 25 most downloaded packages.

See also


  1. ^ Hornik, Kurt (2020-02-20). "Frequently Asked Questions on R". The Comprehensive R Archive Network. 7.29: What is the difference between package and library?. Retrieved 2 November 2020.((cite web)): CS1 maint: location (link)
  2. ^ Wickham, Hadley; Bryan, Jennifer. "Introduction". R Packages (2nd ed.).
  3. ^ a b c d e Chambers, John M. (2020). "S, R, and Data Science". The R Journal. 12 (1): 462–476. doi:10.32614/RJ-2020-028. ISSN 2073-4859.
  4. ^ Vance, Ashlee (2009-01-06). "Data Analysts Captivated by R's Power". New York Times.
  5. ^ Tippmann, Sylvia (2014-12-29). "Programming tools: Adventures with R". Nature News. 517 (7532): 109–110. doi:10.1038/517109a.
  6. ^ a b c Thieme, Nick (2018). "R generation". Significance. 15 (4): 14–19. doi:10.1111/j.1740-9713.2018.01169.x. ISSN 1740-9713.
  7. ^ R Core Team. "Writing R Extensions". The Comprehensive R Archive Network. Retrieved 2020-11-02.((cite web)): CS1 maint: uses authors parameter (link)
  8. ^ CRAN Repository Maintainers. "CRAN Repository Policy". The Comprehensive R Archive Network. Retrieved 2020-11-02.((cite web)): CS1 maint: uses authors parameter (link)
  9. ^ a b CRAN Repository Maintainers. "CRAN Repository Policy". The Comprehensive R Archive Network. R Project. Retrieved 20 November 2020.
  10. ^ a b Hornik, Kurt (2020-02-20). "Frequently Asked Questions on R". The Comprehensive R Archive Network. 2.1: What is CRAN?: R Project. Retrieved 20 November 2020.((cite web)): CS1 maint: location (link)
  11. ^ CRAN Repository Maintainers. "The Comprehensive R Archive Network". R Project. Retrieved 20 November 2020.
  12. ^ CRAN Repository Maintainers. "CRAN - Contributed Packages". The Comprehensive R Archive Network. CRAN. Retrieved 20 November 2020.
  13. ^ Hornik, Kurt (1997-04-23). "ANNOUNCE: CRAN". r-announce (Mailing list). Retrieved 20 November 2020.
  14. ^ Thieme, Nick (2018). "R generation". Significance. 15 (4): 14–19. doi:10.1111/j.1740-9713.2018.01169.x. ISSN 1740-9713.
  15. ^ Fitzgerald, Brian (2016-02-09). "A Survey of Programming Language Package Systems". Some Things Are Obvious. Retrieved 4 May 2021.
  16. ^ "CRAN Task Views". cran.r-project.org. Retrieved 2018-09-16.
  17. ^ a b c "Metacran".
  18. ^ April 21, Matt Asay in Open Source on; 2016; Pst, 12:32 Pm. "Exponential growth of R's open source community threatens commercial competitors". TechRepublic. Retrieved 2020-11-02.((cite web)): CS1 maint: numeric names: authors list (link)
  19. ^ Ooms, Jeroen (2013). "Possible Directions for Improving Dependency Versioning in R". The R Journal. 5 (1): 197–206. doi:10.32614/RJ-2013-019. ISSN 2073-4859. S2CID 6791850.
  20. ^ Decan, A.; Mens, T.; Claes, M.; Grosjean, P. (2016). "When GitHub Meets CRAN: An Analysis of Inter-Repository Package Dependency Problems". 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER). 1: 493–504. doi:10.1109/SANER.2016.12. ISBN 978-1-5090-1855-0. S2CID 16751624.
  21. ^ Hornik, Kurt (2012). "Are There Too Many R Packages?". Austrian Journal of Statistics. 41 (1): 59–66–59–66. doi:10.17713/ajs.v41i1.188. ISSN 1026-597X.
  22. ^ "Welcome to MRAN". Microsoft R Application Network. Microsoft. Retrieved 4 May 2021.
  23. ^ "Reproducibility: Using Fixed CRAN Repository Snapshots". Microsoft R Application Network. Microsoft. Retrieved 4 May 2021.
  24. ^ Smith, David (2019-05-22). "MRAN snapshots, and you". Revolutions. Revolution Analytics. Retrieved 4 May 2021.
  25. ^ Lopp, Sean (2020-12-07). "RStudio Package Manager 1.2.0 - Bioconductor & PyPI". RStudio Blog. RStudio. Retrieved 4 May 2021.
  26. ^ Lopp, Sean (2020-07-01). "Announcing Public Package Manager and v1.1.6". RStudio Blog. RStudio. Retrieved 4 May 2021.
  27. ^ Huber, W; Carey, VJ; Gentleman, R; Anders, S; Carlson, M; Carvalho, BS; Bravo, HC; Davis, S; Gatto, L; Girke, T; Gottardo, R; Hahne, F; Hansen, KD; Irizarry, RA; Lawrence, M; Love, MI; MacDonald, J; Obenchain, V; Oleś, AK; Pagès, H; Reyes, A; Shannon, P; Smyth, GK; Tenenbaum, D; Waldron, L; Morgan, M (2015). "Orchestrating high-throughput genomic analysis with Bioconductor". Nature Methods. Nature Publishing Group. 12 (2): 115–121. doi:10.1038/nmeth.3252. PMC 4509590. PMID 25633503.
  28. ^ "R-Forge: Welcome". Retrieved 2018-09-16.
  29. ^ a b Hornik, Kurt (2020-02-20). "Frequently Asked Questions on R". The Comprehensive R Archive Network. 5.1: Which add-on packages exist for R?. Retrieved 2 November 2020.((cite web)): CS1 maint: location (link)
  30. ^ "R infrastructure".

Further reading