Paquetes R: Tutorial para principiantes
Los paquetes R son colecciones de funciones y conjuntos de datos desarrollados por la comunidad. Aumentan la potencia de R mejorando las funcionalidades básicas de R existentes o añadiendo otras nuevas. Por ejemplo, si trabaja habitualmente con marcos de datos, probablemente habrá oído hablar de dplyr
o data.table
dos de los paquetes más populares de R.
Pero imagina que quieres procesar textos coreanos en lenguaje natural, extraer datos meteorológicos de la web o incluso estimar la evapotranspiración real mediante modelos de balance energético de la superficie terrestre, ¡los paquetes de R te lo ponen fácil! Recientemente, el repositorio oficial(CRAN) alcanzó los 10.000 paquetes publicados, y muchos más están disponibles públicamente a través de Internet.
Si estás empezando con R, este post cubrirá los conceptos básicos de los paquetes de R y cómo utilizarlos. Abarcará los siguientes temas y 11 preguntas frecuentes de los usuarios:
1. ¿Qué es un paquete R?
Empecemos con algunas definiciones. Un paquete es una forma adecuada de organizar tu propio trabajo y, si quieres, compartirlo con los demás. Normalmente, un paquete incluirá código (¡no sólo código R!), documentación para el paquete y las funciones que contiene, algunas pruebas para comprobar que todo funciona como debería, y conjuntos de datos.
La información básica sobre un paquete se proporciona en el archivo DESCRIPTION, donde se puede averiguar qué hace el paquete, quién es el autor, a qué versión pertenece la documentación, la fecha, el tipo de licencia que utiliza y las dependencias del paquete.
Tenga en cuenta que también puede utilizar el enlace alternativo de estadísticas para ver el archivo DESCRIPTION.
Además de encontrar los archivos DESCRIPTION como cran.r-project.org o stat.ethz.ch, también puede acceder al archivo de descripción dentro de R con el comando packageDescription("package")
, a través de la documentación del paquete help(package = "package")
, o en línea en el repositorio del paquete.
Por ejemplo, para el paquete "stats", estas vías serán:
packageDescription("stats")
help(package = "stats")
2. ¿Qué son los repositorios de R?
Un repositorio es un lugar donde se encuentran los paquetes para que puedas instalarlos desde él. Aunque usted o su organización dispongan de un repositorio local, lo normal es que estén en línea y sean accesibles a todo el mundo. Tres de los repositorios más populares para paquetes R son:
- CRAN: el repositorio oficial, es una red de servidores ftp y web mantenidos por la comunidad R en todo el mundo. La fundación R lo coordina, y para que un paquete se publique aquí, tiene que pasar varias pruebas que garanticen que el paquete sigue las políticas de CRAN.
- Bioconductor: se trata de un repositorio temático destinado a software de código abierto para bioinformática. Como CRAN, tiene sus propios procesos de envío y revisión, y su comunidad es muy activa, con varias conferencias y reuniones al año.
- Github: aunque no es específico de R, Github es probablemente el repositorio más popular para proyectos de código abierto. Su popularidad proviene del espacio ilimitado para el código abierto, la integración con git, un software de control de versiones, y su facilidad para compartir y colaborar con otros. Pero tenga en cuenta que no lleva asociado ningún proceso de revisión.
3. Cómo instalar un paquete R
Instalación de paquetes R desde CRAN
La forma de instalar un paquete R dependerá de dónde se encuentre. Por lo tanto, para los paquetes disponibles públicamente, esto significa a qué repositorio pertenece. La forma más común es utilizar el repositorio CRAN, entonces sólo necesita el nombre del paquete y utilizar el comando install.packages("package")
.
Por ejemplo, el paquete más antiguo publicado en CRAN y que sigue en línea y actualizándose es el paquete vioplot
de Daniel Adler.
¿Puede encontrar la fecha de publicación? Pista: Está en la descripción del paquete ;).
Para instalarlo desde CRAN, tendrá que utilizar:
install.packages("vioplot")
Después de ejecutar esto, recibirá algunos mensajes en la pantalla. Dependerán del sistema operativo que esté utilizando, de las dependencias y de si el paquete se ha instalado correctamente.
Vamos a echar un vistazo más profundo en la salida de la instalación vioplot
, algunos de los mensajes que puede obtener son:
Installing package into ‘/home/username/R/x86_64-pc-linux-gnu-library/3.3’
(as ‘lib’ is unspecified)
Indica dónde está instalado el paquete en su ordenador, y puede indicar una ubicación de carpeta diferente utilizando el parámetro lib
.
trying URL 'https://cran.rstudio.com/src/contrib/vioplot_0.2.tar.gz'
Content type 'application/x-gzip' length 3801 bytes
==================================================
downloaded 3801 bytes
Aquí recibirá información sobre el origen y el tamaño del paquete. Esto dependerá de la réplica de CRAN que haya seleccionado.
También puedes cambiarlo, pero leerás más sobre esto más adelante en este post.
* installing *source* package ‘vioplot’ ...
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (vioplot)
Estos son los mensajes de la propia instalación, el código fuente, la ayuda, algunas pruebas y, por último, un mensaje de que todo ha ido bien y el paquete se ha instalado correctamente. Dependiendo de la plataforma en la que te encuentres, estos mensajes pueden variar.
The downloaded source packages are in
‘/tmp/RtmpqfWbYL/downloaded_packages’
El último dato le indica dónde se encuentran los archivos originales del paquete. No son necesarios para el uso del paquete, por lo que suelen copiarse en una ubicación temporal de la carpeta.
Por último, para instalar más de un paquete R a la vez, basta con escribirlos como un vector de caracteres en el primer argumento de la función install.packages()
:
install.packages(c("vioplot", "MASS"))
Instalación desde réplicas de CRAN
Recuerde que CRAN es una red de servidores (cada uno de ellos llamado "espejo"), por lo que puede especificar cuál desea utilizar. Si está utilizando R a través de la interfaz RGui, puede hacerlo seleccionándolo de la lista que aparece justo después de utilizar el comando install.packages()
. En RStudio, la réplica ya está seleccionada por defecto.
También puede seleccionar su réplica utilizando chooseCRANmirror()
, o directamente dentro de la función install.packages()
utilizando el parámetro repo. Puede consultar la lista de espejos disponibles en getCRANmirrors()
o directamente en la página de espejos de CRAN.
Ejemplo: para utilizar la réplica de la Biblioteca de la Universidad de Gante (Bélgica) para instalar el paquete vioplot
, puede ejecutar lo siguiente:
install.packages("vioplot", repo = "https://lib.ugent.be/CRAN")
Instalación de paquetes Bioconductor
En el caso de Bioconductor, la forma estándar de instalar un paquete es ejecutando primero el siguiente script:
source("https://bioconductor.org/biocLite.R")
Esto instalará algunas funciones básicas necesarias para instalar paquetes bioconductores, como la función biocLite()
. Si desea instalar los paquetes principales de Bioconductor, simplemente escríbalo sin más argumentos:
biocLite()
Sin embargo, si sólo está interesado en algunos paquetes concretos de este repositorio, puede escribir sus nombres directamente como un vector de caracteres:
biocLite(c("GenomicFeatures", "AnnotationDbi"))
Instalación de paquetes a través de devtools
Como has leído más arriba, cada repositorio tiene su propia forma de instalar un paquete desde ellos, por lo que en el caso de que utilices regularmente paquetes de diferentes fuentes, este comportamiento puede ser un poco frustrante. Una forma más eficiente es probablemente utilizar el paquete devtools
para simplificar este proceso, ya que contiene funciones específicas para cada repositorio, incluido CRAN.
Puede instalar devtools
como de costumbre con install.packages("devtools")
, pero puede que también necesite instalar Rtools en Windows, las herramientas de línea de comandos Xcode en Mac, o r-base-dev y r-devel en Linux.
Una vez instalado devtools
, podrá utilizar las funciones de utilidad para instalar otros paquetes. Las opciones son:
install_bioc()
de Bioconductor,install_bitbucket()
de Bitbucket,install_cran()
de CRAN,install_git()
de un repositorio git,install_github()
de GitHub,install_local()
desde un archivo local,install_svn()
de un repositorio SVN,install_url()
desde una URL, yinstall_version()
de una versión específica de un paquete CRAN.
Por ejemplo, para instalar el paquete babynames desde su repositorio de Github, puedes utilizar:
devtools::install_github("hadley/babynames")
4. Cómo actualizar, eliminar y comprobar los paquetes de R instalados
Después de pasar más tiempo con R, es normal que utilice install.packages()
unas cuantas veces a la semana o incluso al día, y dada la velocidad a la que se desarrollan los paquetes de R, es posible que más pronto que tarde necesite actualizar o sustituir sus queridos paquetes. En esta sección encontrará algunas funciones que pueden ayudarle a gestionar su colección.
- Para comprobar qué paquetes están instalados en su ordenador, puede utilizar:
installed.packages()
- Desinstalar un paquete es sencillo con la función
remove.packages()
, en su caso:
remove.packages("vioplot")
- Puede comprobar qué paquetes necesitan una actualización con una llamada a la función:
old.packages()
- Puede actualizar todos los paquetes mediante:
update.packages()
- Pero para un paquete específico, sólo tiene que utilizar una vez más:
install.packages("vioplot")
5. ¿Existen interfaces de usuario para instalar paquetes de R?
Si prefiere una interfaz gráfica de usuario (es decir, señalar y hacer clic) para instalar paquetes, tanto RStudio como RGui las incluyen. En RStudio, lo encontrarás en Herramientas -> Instalar paquete, y allí te aparecerá una ventana emergente para que escribas el paquete que quieres instalar:
En RGui encontrará las utilidades en el menú Paquetes.
6. Cómo cargar paquetes
Una vez instalado un paquete, ya puede utilizar sus funciones. Si sólo necesita un uso esporádico de algunas funciones o datos dentro de un paquete, puede acceder a ellos con la notación packagename::functionname()
. Por ejemplo, como ha instalado el paquete babynames
, puede explorar uno de sus conjuntos de datos.
¿Recuerdas cómo ver un resumen de las funciones y datos que contiene un paquete?
Sí, el help(package = "babynames")
, puede decirle esto.
Para acceder al conjunto de datos de nacimientos dentro del paquete babynames
basta con teclear:
babynames::births
## # A tibble: 6 x 2
## year births
## <int> <int>
## 1 2009 4130665
## 2 2010 3999386
## 3 2011 3953590
## 4 2012 3952841
## 5 2013 3932181
## 6 2014 3988076
Si va a hacer un uso más intensivo del paquete, quizá merezca la pena cargarlo en memoria. La forma más sencilla de hacerlo es con el comando library()
.
Tenga en cuenta que la entrada de install.packages()
es un vector de caracteres y requiere que el nombre vaya entre comillas, mientras que library()
acepta tanto caracteres como nombres y permite escribir el nombre del paquete sin comillas.
Después de esto, ya no necesitará la notación package::function()
, y podrá acceder directamente a sus funcionalidades como a cualquier otra función o dato base de R:
births
## # A tibble: 6 x 2
## year births
## <int> <int>
## 1 2009 4130665
## 2 2010 3999386
## 3 2011 3953590
## 4 2012 3952841
## 5 2013 3932181
## 6 2014 3988076
Es posible que haya oído hablar de la función require()
: en efecto, es posible cargar un paquete con esta función, pero la diferencia es que no arrojará un error si el paquete no está instalado.
Así que utiliza esta función con cuidado.
Puede leer más sobre library() vs require() en R en otro artículo.
7. ¿Cuál es la diferencia entre un paquete y una biblioteca?
Hablando de la función library()
, a veces hay confusión entre un paquete y una biblioteca, y se puede encontrar gente que llama paquetes a las "bibliotecas".
Por favor, no se confunda: library()
es el comando utilizado para cargar un paquete, y se refiere al lugar donde se encuentra el paquete, normalmente una carpeta en su ordenador, mientras que un paquete es la colección de funciones agrupadas convenientemente.
Quizá pueda ayudar una cita de Hadley Wickham, científico jefe de datos en RStudio, e instructor del curso DataCamp "Writing functions in R":
@ijlyttle un paquete es como un libro, una libreria es como una biblioteca; usas library() para sacar un paquete de la biblioteca #rsats
— Hadley Wickham (@hadleywickham) December 8, 2014
Otro buen recordatorio de esta diferencia es ejecutar la función library()
sin argumentos. Le proporcionará la lista de paquetes instalados en diferentes bibliotecas de su ordenador:
library()
8. Cómo cargar más de un paquete R a la vez
Aunque se puede simplemente introducir un vector de nombres en la función install.packages()
para instalar un paquete, en el caso de la función library()
, esto no es posible. Puede cargar un conjunto de paquetes de uno en uno o, si lo prefiere, utilizar una de las muchas soluciones desarrolladas por los usuarios de R.
Puedes encontrar ejemplos en esta discusión de Stack Overflow, este paquete de R y este repositorio de GitHub.
9. Cómo descargar un paquete de R
Para descargar un paquete determinado, puede utilizar la función detach()
. El uso será:
detach("package:babynames", unload=TRUE)
10. ¿Cuáles son las fuentes alternativas de documentación y ayuda?
Como ha leído en las secciones anteriores, el archivo DESCRIPTION contiene información básica sobre un paquete, y aunque esa información es muy beneficiosa, no le ayudará a utilizar este paquete para su análisis. Entonces necesitará otras dos fuentes de documentación: los archivos de ayuda y las viñetas.
Archivos de ayuda
Como en R básico, los comandos ?()
y help()
, son la primera fuente de documentación cuando se empieza con un paquete. Probablemente recuerde que puede obtener una visión general del paquete mediante help(package = "packagename")
, pero cada función puede explorarse individualmente mediante help("name of the function")
o help(function, package = "package")
si el paquete no se ha cargado, donde encontrará normalmente la descripción de la función y sus parámetros y un ejemplo de aplicación.
Por ejemplo, puede que recuerde que para obtener el archivo de ayuda del comando vioplot
del paquete vioplot
, puede escribir:
help(vioplot, package = "vioplot")
Consejo: también puede utilizar otra forma de ver lo que hay dentro de un paquete cargado. Utilice el comando ls()
de este modo:
library(babynames)
ls("package:babynames")
## [1] "applicants" "babynames" "births" "lifetables"
Vignettes
Otra fuente de ayuda muy útil incluida en la mayoría de los paquetes son las viñetas, que son documentos donde los autores muestran algunas funcionalidades de su paquete de forma más detallada. Seguir viñetas es una forma estupenda de ensuciarse las manos con los usos habituales del paquete, por lo que es una manera perfecta de empezar a trabajar con él antes de hacer tu propio análisis.
Como recordará, la información de las viñetas contenidas en un paquete dado también está disponible en su archivo DOCUMENTATION localmente o en línea, pero también puede obtener la lista de viñetas incluidas en sus paquetes instalados con la función browseVignettes()
, y para un paquete dado sólo tiene que incluir su nombre como parámetro: browseVignettes(package="packagename")
. En ambos casos, se abrirá una ventana del navegador para que puedas explorar fácilmente y hacer clic en la viñeta preferida para abrirla.
Si prefiere quedarse en la línea de comandos, el comando vignette()
le mostrará la lista de viñetas, vignette(package = "packagename")
, las incluidas en un paquete determinado, y una vez localizada la que desea explorar, sólo tiene que utilizar el comando vignette("vignettename")
.
Por ejemplo, uno de los paquetes más populares para la visualización es ggplot2
. Es probable que ya lo hayas instalado en tu ordenador, pero si no es así, esta es tu oportunidad de hacerlo y poner a prueba tus nuevas habilidades en install.packages()
.
Suponiendo que ya haya instalado ggplot2
, puede comprobar qué viñetas se incluyen en él:
vignette(package = "ggplot2")
Hay dos viñetas disponibles para ggplot2
, "ggplot2-specs" y "extending-ggplot2". Puedes comprobar el primero con:
vignette("ggplot2-specs")
En RStudio, se mostrará en la pestaña Ayuda de la derecha, mientras que en RGui o en la línea de comandos se abrirá una ventana del navegador con la viñeta.
Puede encontrar más opciones para obtener ayuda de R en el sitio de R-Project.
11. Cómo elegir los paquetes R adecuados
Llegados a este punto, deberías ser capaz de instalar y sacar el máximo partido a tus paquetes de R, pero aún queda una última pregunta en el aire: ¿dónde encontrar los paquetes que necesitas?
La forma típica de descubrir paquetes es simplemente aprendiendo R, en muchos tutoriales y cursos se suelen mencionar los paquetes más populares. Por ejemplo, en Cleaning Data in R se enseña todo sobre tidyr.
Para cada tema que le gustaría cubrir en R, probablemente haya un paquete interesante que pueda encontrar.
Pero, ¿y si tienes un problema concreto y no sabes por dónde empezar? Por ejemplo, como decía en la introducción de este post, ¿y si estás interesado en analizar algunos textos coreanos?
¿Y si quieres recoger datos meteorológicos? ¿O estimar la evapotranspiración?
Has revisado varios repositorios, y sí, sabes que podrías consultar la lista de paquetes de CRAN, pero con más de 10000 opciones, es muy fácil perderse.
Veamos algunas alternativas.
Vista de tareas de CRAN
Una alternativa puede ser navegar por categorías de paquetes de CRAN, gracias a las vistas de tareas de CRAN. ¡Así es! CRAN, el repositorio oficial, también te da la opción de navegar por los paquetes. Las vistas de tareas son básicamente temas o categorías que agrupan paquetes en función de su funcionalidad.
Como puede ver a continuación, todos los paquetes que tengan que ver con la genética se clasificarán en la vista de tareas "Genética":
Tomando como ejemplo los textos coreanos, puede encontrar fácilmente el paquete que necesita navegando hasta la vista de tareas de Procesamiento del Lenguaje Natural. Allí, puedes leer el texto para encontrar el paquete que puede manejar tus textos, o puedes hacer un simple CTRL+F y escribir la palabra clave que estás buscando.
Tendrá el paquete adecuado en un abrir y cerrar de ojos, ¡garantizado!
RDocumentación
Otra alternativa para encontrar paquetes puede ser RDocumentation, un agregador de documentación de ayuda para paquetes R de CRAN, BioConductor y GitHub, que te ofrece una caja de búsqueda preparada para tus peticiones directamente en la página principal.
Puede que aún no conozcas esta segunda alternativa, así que vamos a profundizar un poco más.
Empecemos con los textos coreanos, una característica interesante de RDocumentation es la búsqueda rápida, así que mientras escribes aparecen unos primeros resultados:
Pero vayamos a la búsqueda completa: si introduces la palabra clave "coreano" y haces clic en "Buscar", obtendrás dos columnas con resultados: paquetes a la izquierda y funciones a la derecha.
Centrándonos en la columna de paquetes, para cada resultado se obtiene el nombre del paquete, con un enlace a información más detallada, el nombre del autor, también enlazable para ver otros paquetes del mismo autor, alguna descripción del paquete con la palabra buscada resaltada, e información sobre la popularidad del paquete.
Hablando de popularidad, esto es relevante porque la búsqueda clasificará primero los paquetes más descargados de forma que mejore la relevancia de los resultados. Si quieres conocer más detalles sobre la implementación de búsqueda de RDocumentación, tienes un post muy detallado sobre puntuación y ranking.
Por lo tanto, parece que el paquete KoNLP
puede cubrir sus necesidades, después de hacer clic en su nombre, obtendrá la siguiente información:
- Una cabecera con el nombre del paquete, el autor, la versión, la opción de seleccionar versiones anteriores, el número de descargas y un enlace a su página RDocumentación.
- Una descripción del paquete.
- La lista de funciones incluidas en el paquete, donde se puede hacer clic en cada una de ellas para obtener más detalles sobre el uso de la función. También dispone de un cuadro de búsqueda para acceder rápidamente a la función deseada.
- Un gráfico con la evolución del número de descargas.
- Los detalles del paquete con la información del archivo DESCRIPTION.
- Y por último, un distintivo que puede incluirse en el archivo README del paquete con el enlace a la RDocumentación.
- Paquete RDocumentación. RDocumentation no es sólo un sitio web, sino también un paquete de R. Anula las funciones de ayuda para que pueda incorporar la potencia de RDocumentation a su flujo de trabajo. Una vez cargado este paquete, la función
help()
abrirá una ventana del navegador o su panel de ayuda de RStudio con acceso a RDocumentation.
Tener RDocumentation directamente en tu panel de R o RStudio te da algunas ventajas comparado con el uso del sitio web:
- Compruebe la versión instalada del paquete. El panel de ayuda de un paquete le proporcionará la misma información que la página web (descargas, descripción, lista de funciones, detalles), además de información sobre la versión instalada del paquete.
Compruebe, por ejemplo, el paquete vioplot
que ha instalado anteriormente:
install.packages("RDocumentation")
library(RDocumentation)
help(package = "vioplot")
- Posibilidad de instalar o actualizar un paquete directamente desde el panel de ayuda. Sé que ahora eres un experto en instalar paquetes, pero aquí tienes otra alternativa, hacerlo pulsando un botón en el panel de ayuda que proporciona RDocumentation.
remove.packages("vioplot")
help(package = "vioplot")
- Ejecutar y proponer ejemplos. El panel de ayuda de las funciones dentro de un paquete le ofrecerá la opción de volver a ejecutar los ejemplos con sólo pulsar un botón. También puedes proponer ejemplos que puedan incorporarse a la página de ayuda y ser probados por otros usuarios de R.
install.packages("vioplot")
help(vioplot)
Conclusiones
El post de hoy ha cubierto un amplio abanico de técnicas y funciones para sacar el máximo partido a R mediante el uso de paquetes. Como es habitual, hay más de una forma de realizar una tarea específica en R, y la gestión de paquetes no es una excepción.
Esperamos que haya aprendido las formas más utilizadas y algunas alternativas para descubrir, instalar, cargar, actualizar, obtener ayuda o eliminar un paquete de R.
Este post no cubría demasiados detalles sobre la estructura interna de los paquetes, o cómo crear los tuyos propios. Permanezca atento al blog y a los cursos de DataCamp para conocer estos y otros temas relacionados, pero mientras tanto, una buena referencia es el libro "Paquetes R" que puede encontrar aquí.
Si aún no lo has descubierto buscando en RDocumentación, con weatherData
puedes extraer datos meteorológicos de Internet, y si te interesa la evapotranspiración, quizá deberías echar un vistazo a la página Evapotranspiration
, water
o SPEI
paquetes.
Cursos R
curso
Introduction to R
curso
Intermediate R
curso
Cleaning Data in R

blog
Las 8 mejores ideas de proyectos R para 2023
tutorial
Tutorial sobre cómo instalar R en Windows, Mac OS X y Ubuntu
tutorial
Tutorial sobre cómo importar datos a R
tutorial
Tutorial de regresión lineal en R
Eladio Montero Porras
15 min
tutorial
Tutorial de RStudio
tutorial