Cómo extender las posibilidades que trae R por defecto a través del uso de ‘paquetes’.
Cuando instalamos R por primera vez en nuestro computador, lo que estamos instalando es lo que se conoce como “R base”, es decir, los elementos centrales del lenguaje de programación. Una de las ventajas de R es que se trata de un lenguaje extensible: la propia comunidad puede desarrollar nuevas posibilidades para utilizarlo. La manera de compartir estos nuevos desarrollos es a través de “paquetes”, que incluyen, entre otras cosas, código y datos. Una analogía que se suele utilizar para explicar esto es que R base es un teléfono celular tal como viene de fábrica y los paquetes las apps que descargamos para que tenga más funcionalidades.
En la primera parte de nuestra primera clase utilizamos tres paquetes: gapminder
, babynames
y tidyverse
. Los dos primeros (gapminder
y babynames
) son paquetes que incluyen datos que nos servirán para algunos de los ejercicios que realizaremos. tidyverse
, por su parte, es un “megapaquete” que incluye otros paquetes en su interior. Todos los paquetes que conforman “el Tidyverse” comparten la misma visión sobre el trabajo con datos y la escritura de código. Quizás ahora eso suene un poco enigmático, pero más adelante explicaremos qué quiere decir.
Para instalarlos puedes utilizar el siguiente código.
install.packages("tidyverse")
install.packages("gapminder")
install.packages("babynames")
Para que el código se ejecute necesitas conexión a internet, ya que R se conecta a ella para descargarlos. Verás muchas líneas rojas que indican que R está trabajando (¡que sean rojas no quieren decir haya problemas!). Cuando termine, deberías ver algo así:
Las líneas finales de la consola deberían decir The downloaded source packages are in...
y luego deberías ver el signo >
. Este signo indica que R está listo esperando que le des otra instrucción.
Ya tenemos instalados los tres paquetes que ocuparemos en la primera parte. Cada vez que instalamos un paquete, este queda en nuestro computador. Podemos chequear eso revisando el panel “Packages” abajo a la izquierda. Sin embargo, que los hayamos instalado no quiere decir que estén listos para ser usados. Tenemos que decirle explícitamente a R qué paquetes queremos ocupar en cada sesión (no tiene sentido tener activos paquetes que no estamos utilizando).
La función para llamar o activar un paquete es library(nombre_del_paquete)
. RStudio trata de hacernos la vida más simple, así que cuando empezamos a escribir el nombre de una función se despliega un menú con posibles opciones que indican el nombre de esta y el paquete al que está asociada (en este caso, es una función de R {base}
). Lo que aparece en amarillo es la estructura de la función, es decir, qué argumentos podemos incluir entre paréntesis.
Lo mismo ocurre cuando empezamos a escribir el nombre del paquete. RStudio nos va ofreciendo sugerencias a partir de los paquetes que tenemos instalados:
Cuando queremos ejecutar más de una línea de código, lo que podemos hacer es seleccionar todo el fragmento y hacer clic sobre Run o usar el atajo del teclado.
¡Ejecutemos el código y veamos qué pasa!
Cuando ejecutamos el código, este pasa a la consola. En el caso del primer paquete (tidyverse
), la consola nos da dos avisos. El primero, cuáles son todos los paquetes que estamos cargando al cargar el tidyverse
. Como comentamos antes, este es un megapaquete que incluye otros paquetes en su interior. Al llamarlos a través de library(tidyverse)
se activan estos 8 paquetes que aparecen consignados (pese a que el Tidyverse incluye más). Eso es lo que nos está avisando R en la consola. El otro aviso es de un “Conflicto”. Nos dice que las funciones filter()
y lag()
del paquete dplyr
tienen el mismo nombre que funciones del paquete stats
(que es parte de R base). Como cargamos dplyr
después (al instalar tidyverse
), lo que R nos avisa es que son las funciones de este último paquete las que van a prevalecer por sobre las del paquete stats
.
IMPORTANTE: Lo que hicimos recién fue cargar los paquetes para esta sesión de R que estamos ejecutando actualmente. Si en algún momento cerraras el programa y retomaras tu trabajo en otro momento, tendrías que volver a cargarlos. Solo estamos ilustrando este proceso ahora para que puedas ejecutar el código que guardaremos cada clase sin problemas.