Paquetes (Packages).

La instalación básica de R viene equipada con múltiples funciones para la importación de datos, la realización de transformaciones, el ajuste y evaluación de modelos estadísticos, las representaciones gráficas, … Sin embargo, la enorme potencia de R deriva de su capacidad de incorporar en cualquier momento nuevas funciones capaces de realizar nuevas tareas.

Un paquete (package) es una colección de funciones, datos y código R que se almacenan en una carpeta conforme a una estructura bien definida, fácilmente accesible para R.

En la web de R se puede consultar la lista de paquetes disponibles. En Enero de 2018 esta lista incluye algo más de 12000 paquetes. Asimismo en la sección Task Views se puede consultar una lista de paquetes ordenada según áreas de aplicación.

Cuando instalamos R se incorporan por defecto numerosos paquetes. Podemos ver una lista de los paquetes que actualmente tenemos instalados en nuestro ordenador ejecutando:

library()

o bien en R-Studio picando en la pestaña Packages de la ventana inferior derecha:

rstudio-librerias.png

rstudio-librerias.png

Es importante distinguir entre tener un paquete instalado en el ordenador y tenerlo cargado en memoria:

  • Tenerlo instalado en el ordenador significa simplemente que en algún momento lo hemos bajado de internet y lo hemos copiado en algún directorio en que R lo puede localizar.

  • Tenerlo cargado en memoria significa que durante nuestra sesión de trabajo R ha leído el contenido del paquete y ha incorporado las funciones que contiene a su espacio de trabajo, de tal forma que tales funciones pueden ya ser invocadas y ejecutadas.

Si observamos la imagen anterior veremos que en el listado de paquetes que presenta Rstudio, hay algunos que están marcados (tic) y otros que no (untic). Sólo los paquetes marcados están actualmente cargados en memoria. El resto está simplemente guardado en algún directorio, sin que sus funciones estén aún disponibles para ser ejecutadas desde R. Podemos ver un listado completo de los paquetes actualmente cargados en memoria mediante:

search()
##  [1] ".GlobalEnv"            "package:zoo"          
##  [3] "package:forecast"      "package:RCurl"        
##  [5] "package:bitops"        "package:scatterplot3d"
##  [7] "package:PairedData"    "package:ggplot2"      
##  [9] "package:lattice"       "package:mvtnorm"      
## [11] "package:gld"           "package:TeachingDemos"
## [13] "package:car"           "package:carData"      
## [15] "package:Lock5Data"     "package:MASS"         
## [17] "package:stats"         "package:graphics"     
## [19] "package:grDevices"     "package:utils"        
## [21] "package:datasets"      "package:methods"      
## [23] "Autoloads"             "package:base"


En Rstudio, si picamos en el nombre del paquete, se nos muestra el listado de funciones que contiene; picando sobre cada una de ellas accedemos al correspondiente menú de ayuda:

help-fun

help-fun





Añadir paquetes a nuestra instalación de R

Supongamos que queremos añadir el paquete fun a nuestra instalación de R. Podemos hacerlo directamente desde la consola mediante:

install.packages("fun")

o bien, desde Rstudio una vez que estemos en la ventana Packages, picando en install:

install-library

install-library



En ambos casos, R se conecta a alguno de los repositorios de CRAN (Comprehensive R Archive Network) en internet, descarga el archivo que contiene el paquete, lo descomprime y lo instala en nuestro directorio de paquetes por defecto.





Cargar paquetes en memoria.

Una vez descargado e instalado el paquete (¡¡esto es sólo necesario hacerlo una vez!!), para utilizar las funciones que contiene debemos cargarlo en memoria mediante:

library(fun)

o, de manera equivalente, mediante:

require(fun)

En Rstudio para cargar un paquete en memoria basta simplemente con marcar la casilla junto al nombre del paquete:

CargaLibrerias.png

CargaLibrerias.png



Si un paquete ha sido ya cargado con anterioridad, volver a ejecutar library(nombre-del-paquete) o require(nombre-del-paquete)no tiene ningún efecto, ya que R comprueba si el paquete está en memoria y en tal caso no vuelve a cargarlo.



Importante: Nótese que si picamos en el nombre de la librería en el menú de Rstudio, el comando library() se ejecuta en la consola, pero no se copia en el script (si estuviéramos escribiendo uno). Si estamos desarrollando un script que vamos a reutilizar posteriormente y en el cual vamos a utilizar funciones incluídas en alguna librería, es importante que el comando library(nombre-de-la-librería) quede escrito en el script, ya que si no es así, cuando ejecutemos ese archivo en una nueva sesión de R el programa no reconocerá las funciones por no haber cargado la librería previamente en memoria.



Diferencias entre library() y require()

La única diferencia entre estas dos funciones es que require() ha sido diseñado más específicamente para su uso dentro de funciones:

  • require("paquete") devuelve TRUE o FALSE según el paquete esté o no instalado en el ordenador del usuario. Además, si existe lo carga en memoria, y si no existe lanza un “warning” advirtiendo de ello. De esta forma el programador de la función puede utilizar require() para comprobar si el usuario dispone o no de los paquetes necesarios para ejecutar el resto de comandos incluídos en la función, sin que esta se interrumpa. El uso típico de require es, pues, de la forma:
miFunction <- function(argumentos){
  if (!require('paqueteNecesario'))
    stop("Debe instalar el paquete 'paqueteNecesario' para continuar")
  código-de-la-función
  }
  • library("paquete"), por el contrario, si detecta que el paquete solicitado no existe, lanza un error y detiene el proceso en marcha.





Eliminar paquetes de la memoria.

En ocasiones se hace necesario eliminar de la memoria algún paquete que hemos cargado previamente (por ejemplo, porque deseamos cargar una versión que acabamos de actualizar). Para ello basta con ejecutar el comando

detach("package: nombre-del-paquete", unload=TRUE).

Por ejemplo, para descargar el paquete fun, que hemos cargado antes, bastará ejecutar:

detach("package:fun", unload=TRUE)

De modo equivalente, en Rstudio se puede eliminar de la memoria un paquete simplemente “desmarcándolo” de la lista de paquetes.


Esta función no borra el paquete del disco duro, simplemente lo elimina del espacio de memoria de nuestra sesión de trabajo actual con R.





Eliminar paquetes del disco duro

Si queremos eliminar físicamente del disco duro un paquete que tengamos instalado, basta ejecutar la función remove.packages(nombre-del-paquete). Así, para borrar el paquete fun:

remove.packages("fun")





Actualizar paquetes instalados

La función:

old.packages()

compara los paquetes que tenemos instalados en nuestro ordenador con los que se encuentran en CRAN, y nos proporciona una lista de aquellos que cuentan con una versión más moderna. Para actualizarlos basta con ejecutar:

update.packages()

R nos irá preguntando paquete por paquete si deseamos proceder o no a su actualización.

En RStudio, la actualización de los paquetes puede llevarse a cabo simplemente picando en el icono update en la pestaña Packages.





Encontrar un paquete

A menudo el problema al que se enfrenta el usuario de R es saber si determinada función existe y en qué paquete puede encontrarse. Este problema no tiene una solución única ni inmediata, pero R ofrece varios mecanismos que pueden ayudarnos en esta tarea:


  • Si tenemos una idea aproximada del nombre de la función y creemos que puede encontrarse en alguno de los paquetes que ya tenemos instalados, podemos utilizar help.search() o de modo equivalente ??. Por ejemplo, queremos calcular factores de inflación de la varianza (vif) en modelos de regresión lineal. Para averiguar si ya tenemos alguna función que los calcule, ejecutamos:
help.search("vif")
??vif

y R nos muestra el paquete (o paquetes) ya instalados en nuestro ordenador que contienen dicha función:

rSearch.png

rSearch.png


  • El paquete sos incorpora la función findFn() que permite realizar una búsqueda similar a la anterior, pero ahora no restringida a los paquetes que tenemos en nuestro ordenador, sino sobre todos los paquetes en CRAN. Para utilizar esta función debemos instalar el paquete sos (si no lo tuviésemos ya instalado) y a continuación utilizar:
library(sos)
findFn("vif")

R nos devuelve los resultados en una página web que se abre automáticamente en nuestro navegador por defecto:

findFn.png

findFn.png


  • También podemos utilizar la función RSiteSearch() que realiza la búsqueda sobre toda la web de R, y que también nos devuelve el resultado en una página web. Nótese que podemos restringir nuestra búsqueda solo a funciones:
RSiteSearch("vif",restrict="functions")


rSiteSearch.png

rSiteSearch.png


  • La web Rseek permite también buscar funciones en paquetes:
rSeek

rSeek










© 2016 Angelo Santana, Carmen N. Hernández, Departamento de Matemáticas   ULPGC