Extensiones del lenguaje de programación estadística R
Los paquetes R son extensiones del lenguaje de programación estadística R. Los paquetes R contienen código, datos y documentación en un formato de colección estandarizado que los usuarios de R pueden instalar, generalmente a través de un repositorio de software centralizado como CRAN (Comprehensive R Archive Network). [1] [2] La gran cantidad de paquetes disponibles para R y la facilidad de instalación y uso se han citado como un factor importante que impulsa la adopción generalizada del lenguaje en la ciencia de datos . [3] [4] [5] [6]
En comparación con las bibliotecas de otros lenguajes de programación, los paquetes R deben cumplir con una especificación relativamente estricta. [3] El manual Writing R Extensions [7] especifica una estructura de directorio estándar para el código fuente, los datos, la documentación y los metadatos de los paquetes de R, lo que permite instalarlos y cargarlos utilizando las herramientas de gestión de paquetes integradas de R. [3] Los paquetes distribuidos en CRAN deben cumplir con estándares adicionales. [3] [8] Según John Chambers , si bien estos requisitos "imponen demandas considerables" a los desarrolladores de paquetes, mejoran la usabilidad y la estabilidad a largo plazo de los paquetes para los usuarios finales. [3]
Repositorios
Red integral de archivos R (CRAN)
La Red Integral de Archivos R (CRAN) es el repositorio central de software de R , respaldado por la Fundación R. [9] Contiene un archivo de las versiones más recientes y anteriores de la distribución R, documentación y paquetes R contribuidos. [10] Incluye tanto paquetes fuente como binarios precompilados para Windows y macOS . [11] A noviembre de 2020 , hay más de 16.000 paquetes disponibles. [12] CRAN fue creado por Kurt Hornik y Friedrich Leisch en 1997, [13] [14] con el nombre en paralelo a otros sistemas de empaquetado tempranos como CTAN de TeX (lanzado en 1992) y CPAN de Perl (lanzado en 1995). [15] A partir de 2021 , todavía lo mantienen Hornik y un equipo de voluntarios. [9] El sitio maestro está ubicado en la Universidad de Economía y Negocios de Viena y está reflejado en servidores de todo el mundo. [10][actualizar][actualizar]
La página "Task Views" (lista de temas) del sitio web de CRAN [16] enumera una amplia gama de tareas (en campos como finanzas, genética, computación de alto rendimiento, aprendizaje automático, imágenes médicas, metaanálisis , ciencias sociales y estadísticas espaciales) para las que están disponibles los paquetes R. Otra forma de explorar los paquetes de CRAN es mediante Metacran [17] , que también mantiene listas de paquetes destacados, más descargados, de tendencia o de los que más se depende.
La cantidad de paquetes CRAN ha crecido exponencialmente durante muchos años, [18] y a partir de 2018 [actualizar]se realizaron un promedio de 21 envíos de paquetes nuevos o actualizados todos los días. [6] Dado que cada envío es revisado manualmente por un pequeño equipo de mantenedores de CRAN, muchos de los cuales, según el desarrollador principal de R Peter Dalgaard , se están "acercando a la edad de jubilación", existe la preocupación de que este sistema no sea sostenible a largo plazo. [6] El crecimiento de CRAN ha expuesto las limitaciones de su infraestructura de gestión de dependencias , en particular el hecho de que asume que las dependencias siempre se refieren a la última versión de un paquete, lo que significa que las nuevas versiones de los paquetes CRAN siempre deben ser compatibles con versiones anteriores , [19] y que los paquetes CRAN no pueden tener dependencias que no estén en CRAN. [20] También ha generado preocupaciones sobre la disminución de la calidad de los paquetes. [21]
Gestor de paquetes MRAN y Posit
Microsoft R Application Network (MRAN) es un espejo de CRAN mantenido por Microsoft que se basa en la distribución descendente de R de la empresa, Microsoft R Open (anteriormente Revolution R Open). [22] También incluye un archivo de instantáneas diarias de CRAN, con la marca "CRAN Time Machine", que permite a los usuarios de MRAN eludir las limitaciones de versiones de dependencia de CRAN instalando un conjunto fijo de versiones de paquetes R a través del punto de control de paquetes. [23] [24] En enero de 2023, Microsoft anunció que MRAN se retiraría y que los sitios web y repositorios asociados dejarían de estar disponibles en julio de 2023. [25]
El Posit Package Manager (anteriormente RStudio Package Manager) es una herramienta similar producida por los desarrolladores de RStudio que, además de instantáneas de CRAN, incluye un archivo de paquetes R de Bioconductor y paquetes Python del Python Package Index . [26] También distribuye paquetes binarios precompilados para Linux (solo los binarios de Windows y macOS están incluidos en CRAN). [27]
R-Forge, [29] es una plataforma central para el desarrollo colaborativo de paquetes R, software relacionado con R y proyectos. R-Forge también aloja muchos paquetes beta no publicados y versiones de desarrollo de paquetes CRAN.
Paquetes base y recomendados
R se distribuye con quince "paquetes base": base, compilador, conjuntos de datos, grDevices, gráficos, cuadrícula, métodos, paralelo, splines, estadísticas, stats4, tcltk, herramientas, traducciones y utilidades. [30]
Además, hay quince "paquetes recomendados" de CRAN que se incluyen con las distribuciones binarias de R: KernSmooth, MASS, Matrix, boot, class, cluster, codetools, foreign, lattice, mgcv, nlme, nnet, rpart, strategic y survival. [30]
Otros paquetes
Un grupo de paquetes llamado tidyverse , que puede considerarse un "dialecto del lenguaje R", es cada vez más popular en el ecosistema R. Al 13 de junio de 2020, Metacran [17] incluyó 7 de los 8 paquetes principales de tidyverse en la lista de paquetes R más descargados. El grupo de paquetes se esfuerza por proporcionar una colección cohesiva de funciones para abordar tareas comunes de ciencia de datos, incluida la importación, limpieza, transformación y visualización de datos (en particular con el paquete ggplot2 ).
Los paquetes de infraestructura R [31] respaldan la codificación y el desarrollo de paquetes R y, al 4 de mayo de 2021, Metacran [17] enumera 16 de estos paquetes entre los 25 paquetes más descargados.
^ Hornik, Kurt (20 de febrero de 2020). "Preguntas frecuentes sobre R". The Comprehensive R Archive Network . 7.29: ¿Cuál es la diferencia entre paquete y biblioteca?. Archivado desde el original el 9 de julio de 2011. Consultado el 2 de noviembre de 2020 .{{cite web}}: Mantenimiento de CS1: ubicación ( enlace )
^ Wickham, Hadley; Bryan, Jennifer. "Introducción". Paquetes R (2.ª ed.). Archivado desde el original el 2022-06-29 . Consultado el 2020-11-02 .
^ abcde Chambers, John M. (2020). «S, R y ciencia de datos». The R Journal . 12 (1): 462–476. doi : 10.32614/RJ-2020-028 . ISSN 2073-4859. Archivado desde el original el 2020-11-01 . Consultado el 2020-11-02 .
^ Vance, Ashlee (6 de enero de 2009). "Los analistas de datos se sienten cautivados por el poder de R". New York Times . Archivado desde el original el 2 de mayo de 2021. Consultado el 2 de noviembre de 2020 .
^ Tippmann, Sylvia (29 de diciembre de 2014). "Herramientas de programación: aventuras con R". Nature News . 517 (7532): 109–110. doi : 10.1038/517109a . PMID 25557714.
^ abc Thieme, Nick (2018). "Generación R". Significancia . 15 (4): 14–19. doi : 10.1111/j.1740-9713.2018.01169.x . ISSN 1740-9713.
^ "Cómo escribir extensiones R". The Comprehensive R Archive Network . Archivado desde el original el 2020-11-12 . Consultado el 2020-11-02 .
^ "Política del repositorio de CRAN". Red integral de archivos R. Archivado desde el original el 5 de noviembre de 2020. Consultado el 2 de noviembre de 2020 .
^ ab CRAN Repository Maintainers. "Política del repositorio de CRAN". The Comprehensive R Archive Network . Proyecto R. Archivado desde el original el 11 de noviembre de 2020. Consultado el 20 de noviembre de 2020 .
^ ab Hornik, Kurt (2020-02-20). "Preguntas frecuentes sobre R". The Comprehensive R Archive Network . 2.1: ¿Qué es CRAN?: Proyecto R. Archivado desde el original el 2011-07-09 . Consultado el 20 de noviembre de 2020 .{{cite web}}: Mantenimiento de CS1: ubicación ( enlace )
^ Mantenedores del repositorio CRAN. «La red integral de archivos R». Proyecto R. Archivado desde el original el 23 de enero de 2019. Consultado el 20 de noviembre de 2020 .
^ Mantenedores del repositorio CRAN. «CRAN - Paquetes contribuidos». La red integral de archivos R. CRAN. Archivado desde el original el 24 de noviembre de 2020. Consultado el 20 de noviembre de 2020 .
^ Hornik, Kurt (23 de abril de 1997). "ANUNCIO: CRAN". r-announce (Lista de correo). Archivado desde el original el 8 de marzo de 2021. Consultado el 20 de noviembre de 2020 .
^ Thieme, Nick (2018). "Generación R". Significancia . 15 (4): 14–19. doi : 10.1111/j.1740-9713.2018.01169.x . ISSN 1740-9713.
^ Fitzgerald, Brian (9 de febrero de 2016). "Un estudio de los sistemas de paquetes de lenguajes de programación". Algunas cosas son obvias . Archivado desde el original el 9 de noviembre de 2020. Consultado el 4 de mayo de 2021 .
^ "Vistas de tareas de CRAN". cran.r-project.org . Archivado desde el original el 2011-07-09 . Consultado el 2018-09-16 .
^ abc "Metacran". Archivado desde el original el 20 de abril de 2021. Consultado el 4 de mayo de 2021 .
^ Asay, Matt (21 de abril de 2016). «El crecimiento exponencial de la comunidad de código abierto de R amenaza a los competidores comerciales». TechRepublic . Archivado desde el original el 26 de octubre de 2020 . Consultado el 2 de noviembre de 2020 .
^ Ooms, Jeroen (2013). "Posibles direcciones para mejorar el control de versiones de dependencias en R". The R Journal . 5 (1): 197–206. arXiv : 1303.2140 . doi : 10.32614/RJ-2013-019 . ISSN 2073-4859. S2CID 6791850. Archivado desde el original el 19 de septiembre de 2020 . Consultado el 2 de noviembre de 2020 .
^ Decan, A.; Mens, T.; Claes, M.; Grosjean, P. (2016). "Cuando GitHub se encuentra con CRAN: un análisis de los problemas de dependencia de paquetes entre repositorios". 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER) . Vol. 1. págs. 493–504. doi :10.1109/SANER.2016.12. ISBN978-1-5090-1855-0. S2CID 16751624. Archivado desde el original el 16 de enero de 2021. Consultado el 12 de mayo de 2021 .
^ Hornik, Kurt (2012). "¿Hay demasiados paquetes R?". Revista austriaca de estadística . 41 (1): 59–66–59–66. doi : 10.17713/ajs.v41i1.188 . ISSN 1026-597X. Archivado desde el original el 26 de noviembre de 2020. Consultado el 2 de noviembre de 2020 .
^ "Bienvenido a MRAN". Microsoft R Application Network . Microsoft . Archivado desde el original el 4 de mayo de 2021 . Consultado el 4 de mayo de 2021 .
^ "Reproducibilidad: uso de instantáneas de repositorio CRAN fijas". Microsoft R Application Network . Microsoft . Archivado desde el original el 2 de mayo de 2021 . Consultado el 4 de mayo de 2021 .
^ Smith, David (22 de mayo de 2019). "Instantáneas de MRAN y usted". Revolutions . Revolution Analytics . Archivado desde el original el 4 de mayo de 2021 . Consultado el 4 de mayo de 2021 .
^ "Retiro de Microsoft R Application Network". techcommunity.microsoft.com . Consultado el 15 de noviembre de 2023 .
^ Lopp, Sean (7 de diciembre de 2020). «RStudio Package Manager 1.2.0 - Bioconductor & PyPI». Blog de RStudio . Archivado desde el original el 4 de mayo de 2021 . Consultado el 4 de mayo de 2021 .
^ Lopp, Sean (1 de julio de 2020). "Anuncio del administrador de paquetes público y la versión 1.1.6". Blog de RStudio . RStudio . Archivado desde el original el 4 de mayo de 2021 . Consultado el 4 de mayo de 2021 .
^ 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). "Orquestación de análisis genómico de alto rendimiento con Bioconductor". Nature Methods . 12 (2). Nature Publishing Group : 115–121. doi :10.1038/nmeth.3252. PMC 4509590 . Número de modelo: PMID25633503.
^ "R-Forge: Bienvenidos". Archivado desde el original el 14 de septiembre de 2018. Consultado el 16 de septiembre de 2018 .
^ ab Hornik, Kurt (20 de febrero de 2020). "Preguntas frecuentes sobre R". The Comprehensive R Archive Network . 5.1: ¿Qué paquetes complementarios existen para R?. Archivado desde el original el 9 de julio de 2011. Consultado el 2 de noviembre de 2020 .{{cite web}}: Mantenimiento de CS1: ubicación ( enlace )
^ "Infraestructura R". GitHub . Archivado desde el original el 2021-05-19 . Consultado el 2021-05-04 .
Lectura adicional
Claes, M.; Mens, T.; Grosjean, P. (2014). "Sobre la mantenibilidad de los paquetes CRAN". Semana de la evolución del software 2014 - Conferencia IEEE sobre mantenimiento de software, reingeniería e ingeniería inversa (CSMR-WCRE) . págs. 308–312. doi :10.1109/CSMR-WCRE.2014.6747183. ISBN978-1-4799-3752-3.S2CID 17927576 .
Decan, Alexandre; Mens, Tom; Claes, Maelick; Grosjean, Philippe (7 de septiembre de 2015). "Sobre el desarrollo y la distribución de paquetes R". Actas de los talleres de la Conferencia Europea sobre Arquitectura de Software de 2015. ECSAW '15. Dubrovnik, Cavtat, Croacia: Association for Computing Machinery. págs. 1–6. doi :10.1145/2797433.2797476. ISBN978-1-4503-3393-1.S2CID1680582 .
Fox, John (2009). "Aspectos de la organización social y trayectoria del proyecto R". The R Journal . 1 (2): 5–13. doi : 10.32614/RJ-2009-014 . ISSN 2073-4859.
Fox, John; Leanage, Allison (12 de septiembre de 2016). "R y la revista de software estadístico". Revista de software estadístico . 73 (1): 1–13. doi : 10.18637/jss.v073.i02 . ISSN 1548-7660.
Plakidas, Konstantinos; Schall, Daniel; Zdun, Uwe (2017). "Evolución del ecosistema de software R: métricas, relaciones y su impacto en las cualidades". Journal of Systems and Software . 132 : 119–146. doi :10.1016/j.jss.2017.06.095. ISSN 0164-1212.
Enlaces externos
La red integral de archivos R (CRAN)
METACRAN, un directorio de paquetes R
Vistas de tareas de CRAN, listado de paquetes de CRAN por temas