Martín

R · Estadística · Miscelánea

Incluir conjuntos de datos en paquetes de R

Martín Macías / 2018-04-26


Puede ser útil incluir conjuntos de datos de ejemplo en su paquete de R, para usar en ejemplos o viñetas o para ilustrar un formato de datos.

Si sus conjuntos de datos de ejemplo son enormes, es posible que desee hacer un paquete separado solo con los datos. Ejemplos de paquetes de datos incluyen los paquetes de Hadley Wickham, babynames, nycflights13, y usdanutrients.

Para incluir datasets con su paquete, cree un subdirectorio data y coloque sus datasets allí, en formato .RData (o use la extensión .rda). Primero que todo, importe sus conjuntos de datos para que estén en el entorno que está trabajando, luego sse la función save para crear los archivos .RData, de la siguiente manera:

save(mydata, file="data/mydata.RData")

A continuación, cree un archivo .R con Roxygen2 comentarios que lo harán producir la documentación para el conjunto de datos, y colocar el archivo en el subdirectorio R con todos sus otros archivos .R. Aquí hay un ejemplo, para el conjunto de datos grav en el paquete de Karl Broman R/qtlcharts; vea grav-data.R

#' Arabidopsis QTL data on gravitropism
#'
#' Data from a QTL experiment on gravitropism in
#' Arabidopsis, with data on 162 recombinant inbred lines (Ler x
#' Cvi). The outcome is the root tip angle (in degrees) at two-minute
#' increments over eight hours.
#'
#' @docType data
#'
#' @usage data(grav)
#'
#' @format An object of class \code{"cross"}; see \code{\link[qtl]{read.cross}}.
#'
#' @keywords datasets
#'
#' @references Moore et al. (2013) Genetics 195:1077-1086
#' (\href{http://www.ncbi.nlm.nih.gov/pubmed/23979570}{PubMed})
#'
#' @source \href{http://qtlarchive.org/db/q?pg=projdetails&proj=moore_2013b}{QTL Archive}
#'
#' @examples
#' data(grav)
#' times <- attr(grav, "time")
#' phe <- grav$pheno
#' \donttest{iplotCurves(phe, times)}
"grav"

Esto es muy parecido a documentar una función, pero tenemos que incluir @docType data y @usage data (grav), y donde la definición de la función iría normalmente, simplemente incluimos una línea con el nombre del conjunto de datos como una cadena de caracteres.

Deseará describir el @format de los datos, y es bueno incluir el @source (donde lo obtuvo) y @references. Y a todos les gusta @examples.

¡Eso es! Coloque conjuntos de datos .RData en data/ y agregue documentación Roxygen2 en un archivo .R en R/.

Bueno, una cosa más: es posible que también desee incluir la siguiente línea en el archivo DESCRIPTION para su paquete:

LazyData: true

Si hace esto, los conjuntos de datos en su paquete serán inmediatamente disponible cuando el paquete está cargado; no habrá necesidad de usar data(). Los datos no se cargan en realidad en R hasta que los use (eso es lo que significa “lazy load”).

De acuerdo, una cosa más: también puede incluir el código en R (en un archivo .R) en el directorio data, y también datos tabulares como archivos .txt o .csv. (Ver Datos en paquetes en el Manual de extensiones de Writing R.) Una ventaja de esto es que los datos se pueden ver en GitHub, si pone su paquete allí. Y puede usar tal .txt o archivos .csv para demostrar formatos de archivo y cómo cargar datos en R.