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.