Requisitos previos

Crear paquetes de R con Rstudio es muy sencillo. Obviamente necesitamos tener instalado Rstudio, y además instalar los paquetes Roxygen2 (que permite generar muy fácilmente la documentación de ayuda de nuestro paquete) y devtools (herramientas de desarrollo de paquetes).

Pasos para la creación de un paquete

1 Crear el proyecto.

En Rstudio seleccionamos File –> New Project. Se nos abrirá la ventana siguiente:

NuevoProyecto

NuevoProyecto

Seleccionamos New Directory. Ello hará que Rstudio cree un directorio donde almacenaremos los archivos relacionados con nuestro proyecto. Seguidamente Rstudio nos pregunta por el tipo de proyecto:

TipoProyecto

TipoProyecto

Seleccionamos R Package y llegamos a la siguiente ventana:

creaPaquete

creaPaquete

En la casilla Package name: especificamos el nombre de nuestro proyecto, por ejemplo _miPrimeraLibreria__; en la casilla Create package based on source files podemos añadir (picando en el botón Add) los archivos .R que contengan nuestras funciones, si los hemos generado previamente (no es estrictamente necesario añadirlos ahora, se pueden añadir posteriormente). Por último indicamos el directorio raiz del que colgará el subdirectorio en que estarán contenidos los archivos de nuestro proyecto. Resulta conveniente disponer de una carpeta específica para paquetes de R. Rstudio creará un subdirectorio dentro de dicha carpeta con el nombre de nuestro nuevo paquete.

Aquellos usuarios avanzados que quieran llevar a cabo un control de versiones del paquete pueden picar en Create a git repository (requiere conocimientos de git)

Al pinchar en el botón Create Project se creará un directorio en la ubicación indicada con la estructura necesaria para que R pueda construir la librería:

estructura

estructura

En primer lugar picamos en el archivo DESCRIPTION (en la ventana inferior derecha), y completamos la información relativa al nombre del paquete, autor, descripción, etc:

descripcion

descripcion




2. Crear las funciones que componen el paquete

A continuación pinchamos en el icono de la carpeta denominada R en la ventana inferior derecha. Esta es la carpeta donde deben ir los archivos de script que contienen el código de nuestras funciones. Por defecto, salvo que hayamos indicado algún archivo en el paso anterior, en esta carpeta aparecerá un único archivo (vacío) con el nombre del paquete. Podemos abrir ese archivo y escribir directamente en él nuestras funciones, o podemos ir añadiendo archivos nuevos a esta carpeta. Suele ser buena práctica tener un único archivo por función ya que ello facilita las tareas de mantenimiento (actualización de la función, documentación, etc).

Para crear un archivo con una función vamos a File –> New File –> R Script y creamos un nuevo archivo. A modo de ejemplo, vamos a crear una función llamada normalHist() que dibuje un histograma y le superponga una curva normal. El código de la función es el siguiente:

normalHist=function(x,dens=FALSE,...){
  m=mean(x)
  stdev=sd(x)
  xn=seq(min(x),max(x),length=200)
  yn=dnorm(xn,m,stdev)
  maxy=1.1*max(yn)
  hist(x, ylim=c(0,maxy),freq=FALSE,...)
  lines(xn,yn,col="red",lwd=2)
  if (dens) lines(density(x),col="blue",lty=2,lwd=2)
}

Copiamos este código en el archivo, que quedará de la forma:

funcion1

funcion1

Para que R pueda generar automáticamente el archivo de ayuda para esta función incluimos las siguientes lineas antes del comienzo de la función:

#' @title Dibuja el histograma de una variable superponiendo la densidad normal ajustada
#' @description Función que dibuja el histograma de una variable x, superponiendo la densidad normal
#' ajustada. Si el usuario lo desea puede superponer también un estimador de núcleo de la densidad.
#' @param x vector de datos cuyo histograma se va a calcular
#' @param dens valor lógico: TRUE=Superponer estimador de núcleo de la densidad
#' @return el histograma con la densidad normal superpuesta
#' @export normalHist
#' @examples
#' u=rnorm(1000,100,12)
#' normalHist(u); 
#' normalHist(u,dens=TRUE)
#' normalHist(u,dens=TRUE,col="lightcyan")
#' 

En ellas describimos qué argumentos recibe la función, qué valor o valores devuelve, algunos ejemplos …. El paquete roxygen2 se encargará de construir los archivos de ayuda a partir de esta información.

El archivo con nuestra función debe quedar, por tanto, de la forma:

funcionCompleta

funcionCompleta

Ahora la guardamos (File –> Save as) en un archivo R, preferentemente con el mismo nombre de la función. No es estrictamente necesario, pero nos facilitará posteriormente poder localizar la función si la queremos modificar. Por defecto, la función se guarda en la carpeta R del directorio de nuestro paquete.

3. Construir nuestra librería

Para construir nuestro paquete vamos a la pestaña Build (ventana superior derecha). Antes que nada, comprobamos nuestra configuración, y la ajustamos en caso necesario. Para ello picamos en el icono more de dicha ventana:

configureBuild

configureBuild

y a continuación en Configure Build Tools. Se nos abre una ventana como la siguiente:

configureRoxygen

configureRoxygen

y picamos en la casilla Generate documentation with Roxygen. Además picamos el botón Configure…, y se nos abre el menú siguiente:

configRox

configRox

Seleccionamos las casillas NAMESPACE file y Build & Reload, además de las opciones marcadas por defecto (Rd files, R CMD check y Source and binary packages build).



Una vez ajustada la configuración, pinchamos en Build & Reload:

BuildReload

BuildReload




¡Y ya está! Hemos creado nuestra primera librería. A partir de ahora, figurará en la lista de paquetes en Rstudio, y podemos cargarla (y usar las funciones que contiene), simplemente picando en su nombre, o ejecutando library(miPrimeraLibreria).








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