4  PAQUETES

R es un ambiente de trabajo extensible por módulos. Hay miles de módulos especializados en realizar diferentes tareas. A estos módulos se les denomina paquetes (packages) y pueden obtenerse desde cualquiera de los servidores de la CRAN. Los paquetes contienen una o más funciones con su correspondiente documentación; a menudo también contienen bases de datos.

Cuando se instala R por primera vez, se incluyen siete paquetes básicos: base, stats, graphics, grDevices, methods, utils y datasets. El usuario puede instalar todos los paquetes adicionales que requiera.

A pesar del gran potencial de R para ejecutar un sinfín de procesos, el programa es muy liviano y eficiente. Esto se debe al hecho de que R no carga simultáneamente toda su artillería, sino únicamente los paquetes requeridos para una aplicación determinada.

Para usar un paquete es necesario instalarlo y cargarlo en memoria. Estos dos pasos se diferencian y detallan a continuación.

4.1 Instalación de paquetes

Hay muchas formas de instalar paquetes para R. A continuación se detallan las dos más usuales.

4.1.1 Instalación desde la interfaz de RStudio (opción recomendada)

La forma más cómoda de instalar paquetes para R desde RStudio es a través de la pestaña Packages, la cual se ubica por defecto en el panel inferior derecho. Allí se presiona el botón Install R packages, con lo cual aparece la caja de diálogo de instalación de paquetes.


Figura 4.1: Caja de diálogo de instalación de paquetes


A continuación, se digita el nombre del paquete en la casilla “Packages (separate multiple with space or comma”. A medida que se va digitando, el sistema va mostrando todos los paquetes con los que hay coincidencia parcial en los primeros caracteres. Una vez se encuentre el paquete deseado, se elige y se presiona el botón Install.

Lo que hace esta caja de diálogo es que envía a consola la instrucción install.packages con el paquete como argumento, y la ejecuta.

Así, por ejemplo, si en la caja de diálogo se elige el paquete, car, se envía a consola la siguiente instrucción:

install.packages("car")

Tal y como indica la leyenda, para instalar varios paquetes, se separan sus nombres con espacio o con coma.

Instale las dependencias

Siempre que se instale un paquete, debe mantenerse chequeada la casilla “Install dependencies”.

Esto asegura que se instalen junto con el paquete principal todos los otros paquetes de los cuales dependa. Tales paquetes son necesarios para el adecuado funcionamiento del paquete principal.

Así, por ejemplo, al instalar el paquete homals, también se instalan los paquetes ape y scatterplot3d, sin necesidad de intervención por parte del usuario.

¿¡Y si no tengo Internet!?

Para instalar un paquete en un equipo sin acceso a Internet, se elige ‘Package Archive File (.zip; .tar.gz)’ en la casilla ‘Install from:’ de la caja de diálogo de instalación de paquetes.

El instalador tendrá que haberse descargado previamente desde un equipo con conexión a la red, siguiendo el procedimiento que se describe en la sección 4.1.2.

Otra forma de acceder a la caja de diálogo de instalación de paquetes es a ingresando por el menú “Tools” y eligiendo la opción “Install packages…”.

4.1.2 Instalación a través de la CRAN

Ingresando por la página principal del proyecto R, se sigue el vínculo CRAN y se elige un servidor o mirror. Una vez seleccionado el servidor, se sigue el vínculo contributed extension packages.

Puede buscarse el paquete a través de una lista organizada por fecha de publicación o a través de una lista organizada en orden alfabético. Desde luego, cuando se tenga un paquete previamente identificado, será más fácil encontrarlo en la lista organizada por nombre.

¿¡Y entonces para que sirve la lista por fecha!?

La lista por fecha puede ser de interés para usuarios supremamente entusiastas que no quieran perderse los últimos lanzamientos.

Lista de paquetes por grupos temáticos

En adición a la búsqueda de paquetes ordenados alfabéticamente o por fecha de publicación, se dispone de una búsqueda temática, a la cual puede accederse mediante el vínculo CRAN Task Views, que aparece debajo de los vínculos que permiten las otras dos modalidades de búsqueda.

En lugar de explorar los más de 22000 paquetes disponibles, en búsqueda de alguno(s) que pueda(n) ser de utilidad para una labor específica, en este módulo se presenta unos pocos ejes temáticos1, en cada uno de los cuales se reseñan los paquetes más relevantes dentro de la temática de interés.

Una vez identificado el paquete —sin importar la lista que se hubiera usado para llegar a él—, se hace clic sobre su nombre, lo que conduce a una página que contiene todos los recursos asociados con este.

En la entrada “Downloads” se elige el instalador correspondiente al sistema operativo. Para Windows, se elige el correspondiente archivo r-release.

Una vez se haya bajado el archivo zip comprimido, se procede a la instalación, eligiendo ‘Package Archive File (.zip; .tar.gz)’ en el campo ‘Install from:’ de la caja de diálogo de instalación de paquetes (cf. figura 4.1).

No descuide las dependencias

Esta forma de instalación tiene la desventaja de exigirle al usuario la instalación individual de cada uno de los paquetes de los que dependa el paquete principal que vaya a instalarse.

Obsérvese, por ejemplo que el paquete homals depende de los paquetes ape y scatterplot3d2. Por tanto, si un usuario desea usar el paquete homals, con todas sus funcionalidades, deberá instalar adicionalmente los otros dos paquetes.

4.2 Carga de paquetes

Todas las funciones en R forman parte de algún paquete que debe estar cargado en memoria para poder usarse en una sesión de trabajo.

El hecho de haber instalado un paquete no significa que el mismo se encuentre siempre cargado en memoria y listo para ser usado.

Aunque a primera vista esto podría parecer una desventaja, en realidad constituye una ventaja, por cuanto permite que R se mantenga liviano al cargar en memoria únicamente lo que va a ser usado en una sesión determinada.

Cada vez que se inicia una sesión en R, se cargan los siete paquetes básicos que vienen preinstalados con el programa: base, stats, graphics, grDevices, methods, utils y datasets, sin que que se requiera ningún tipo intervención por parte del usuario. El uso de cualquier otro paquete en una sesión de trabajo específica requerirá que este se cargue en memoria.

Para cargar un paquete es necesario que este haya sido instalado previamente. La instalación se realiza una sola vez (otro asunto son las actualizaciones (cf. sección 5.3)); la carga debe realizarse en cada sesión de trabajo en la que vaya a usarse el paquete.

La manera más común de cargar un paquete, junto con todos los otros paquetes de los que dependa, es usando las funciones library o require, con el nombre del paquete como argumento.

Si el paquete que se pretende cargar está instalado, es indiferente usar cualquiera de las dos funciones, pues ambas realizan exactamente la misma tarea: cargan el paquete en memoria, dejándolo disponible para su uso. Así, para cargar, por ejemplo, el paquete homals, junto con sus paquetes anexos, puede usarse:

library(homals)

O, equivalentemente:

require(homals)

En caso de que el paquete no hubiera sido instalado previamente, el comportamiento de ambas funciones diferiría: la función library(paquete) generaría un error, mientras que la función require(paquete) generaría una advertencia y un marcador lógico con valor falso, lo que facilitaría resolver dicha contingencia en un script, a través de la función install.packages (cf. sección 20.4).

¡Que avise si le falta alguno!

Cuando se carga o escribe un script que incluya un paquete no instalado, RStudio puede avisar que está ausente y proporcionar un vínculo para instalarlo.

Para ello debe estar activada la casilla ‘Prompt to install missing R packages discovered in R source files’, la cual se encuentra en la ventana de opciones de código (“Tools” > “Global Options” > “Code”), en la pestaña Diagnostics.

Cuando se cita una función, suele indicarse el paquete que la contiene. La manera usual consiste en escribir el nombre de la función, sucedido por el nombre del paquete, entre llaves. Así, para referenciar, por ejemplo, la función mjca, que forma parte del paquete ca, se escribe mjca{ca}.

La función search() muestra los paquetes cargados en memoria en una sesión de trabajo particular. La función library() muestra todos los paquetes instalados disponibles, cargados o no. Tales paquetes también se muestran al seleccionar la pestaña Packages, que se ubica por defecto en el panel inferior derecho de RStudio.

Una vez cargado un paquete en memoria, puede accederse a cualquiera de las funciones contenidas en el mismo. El paquete permanecerá cargado durante la sesión de trabajo o hasta que se descargue explícitamente.

Aunque no es usual descargar un paquete de memoria, eventualmente podría requerirse para evitar conflictos con funciones de algún otro paquete. Para tal efecto, se utiliza la función detach, con el argumento package:paquete. Así, por ejemplo, para descargar de memoria el paquete phia, se escribe:

detach(package:phia)

Es importante tener presente que mediante este procedimiento únicamente se descarga de memoria el paquete relacionado en el argumento, sin que se descarguen los demás paquetes que hayan podido cargarse por depender del paquete principal. Así, al usar, por ejemplo, el comando library(phia), además de cargarse el paquete phia, también se carga de manera automática el paquete car; no obstante, al usar el comando: detach(package:phia) solo se descarga el paquete phia, manteniéndose car.

Tip 4.1: ¡Carga temporal de paquetes!

El operador dos puntos dobles (::) permite realizar una carga temporal de un paquete para un único uso de una función particular.

Supóngase que se desea usar la función interactionMeans contenida en el paquete phia, pero no se quiere mantener cargado en memoria el paquete phia. Una opción consiste en cargar phia, invocar la función interactionMeans y descargar phia (¡3 instrucciones!).

library(phia)
interactionMeans(argumentos)
detach(package:phia)

Mediante el operador dos puntos dobles, esto puede realizarse en una única instrucción:

phia::interactionMeans(argumentos)

Esta instrucción carga de manera temporal el paquete phia, permitiendo una única invocación de la función interactionMeans.


  1. 46 al momento de la última revisión.↩︎

  2. Esto se observa en la entrada Imports↩︎