R Language
Creando paquetes con devtools
Buscar..
Introducción
Este tema cubrirá la creación de paquetes R desde cero con el paquete devtools.
Observaciones
Creación y distribución de paquetes.
Esta es una guía compacta sobre cómo crear rápidamente un paquete R a partir de su código. Las documentaciones exhaustivas se vincularán cuando estén disponibles y deben leerse si desea un conocimiento más profundo de la situación. Vea Observaciones para más recursos.
El directorio donde se encuentra su código será referido como ./
, y todos los comandos deben ejecutarse desde un indicador de R en esta carpeta.
Creación de la documentación.
La documentación de su código debe estar en un formato que sea muy similar al de LaTeX.
Sin embargo, usaremos una herramienta llamada roxygen
para simplificar el proceso:
install.packages("devtools")
library("devtools")
install.packages("roxygen2")
library("roxygen2")
La página man completa de roxygen está disponible aquí . Es muy similar al doxygen .
Aquí hay una muestra práctica sobre cómo documentar una función con roxygen :
#' Increment a variable.
#'
#' Note that the behavior of this function
#' is undefined if `x` is not of class `numeric`.
#'
#' @export
#' @author another guy
#' @name Increment Function
#' @title increment
#'
#' @param x Variable to increment
#' @return `x` incremented of 1
#'
#' @seealso `other_function`
#'
#' @examples
#' increment(3)
#' > 4
increment <- function(x) {
return (x+1)
}
También se recomienda crear una viñeta (consulte el tema Creación de viñetas ), que es una guía completa sobre su paquete.
Construcción del paquete esqueleto.
Suponiendo que su código está escrito, por ejemplo, en los archivos ./script1.R
y ./script2.R
, ejecute el siguiente comando para crear el árbol de archivos de su paquete:
package.skeleton(name="MyPackage", code_files=c("script1.R","script2.R"))
Luego borre todos los archivos en ./MyPackage/man/
. Ahora tienes que compilar la documentación:
roxygenize("MyPackage")
También debe generar un manual de referencia a partir de su documentación utilizando R CMD Rd2pdf MyPackage
desde un indicador de comandos iniciado en ./
.
Edición de las propiedades del paquete.
1. Descripción del paquete
Modifique ./MyPackage/DESCRIPTION
acuerdo con sus necesidades. Los campos Package
, Version
, License
, Description
, Title
, Author
y Maintainer
son obligatorios, los otros son opcionales.
Si su paquete depende de otros paquetes, especifíquelos en un campo llamado Depends
(R versión <3.2.0) o Imports
(R versión> 3.2.0).
2. Carpetas opcionales
Una vez que inició la construcción de esqueleto, ./MyPackage/
solo tenía R/
y man/
subcarpetas. Sin embargo, puede tener algunos otros:
-
data/
: aquí puede colocar los datos que su biblioteca necesita y que no son códigos. Debe guardarse como conjunto de datos con la extensión.RData
, y puede cargarlo en tiempo de ejecución condata()
yload()
-
tests/
: todos los archivos de código en esta carpeta se ejecutarán en el momento de la instalación. Si hay algún error, la instalación fallará. -
src/
: para los archivos fuente de C / C ++ / Fortran que necesita (usandoRcpp
...). -
exec/
: para otros ejecutables. -
misc/
: para casi todo lo demás.
Finalización y construcción
Puede eliminar ./MyPackage/Read-and-delete-me
.
Tal como está ahora, su paquete está listo para ser instalado.
Puede instalarlo con devtools::install("MyPackage")
.
Para compilar su paquete como un archivo fuente, debe ejecutar el siguiente comando, desde un indicador de comandos en ./
: R CMD build MyPackage
Distribución de su paquete.
A través de Github
Simplemente cree un nuevo repositorio llamado MyPackage y cargue todo en MyPackage/
a la rama maestra. Aquí hay un ejemplo .
Entonces cualquiera puede instalar su paquete desde github con devtools:
install_package("MyPackage", "your_github_usename")
A través de CRAN
Su paquete debe cumplir con la Política de repositorio CRAN . Incluyendo pero no limitado a: su paquete debe ser multiplataforma (excepto algunos casos muy especiales), debe pasar la prueba de R CMD check
.
Aquí está el formulario de envío . Debes subir el código fuente.
Creando viñetas
Una viñeta es una guía de formato largo para su paquete. La documentación de la función es excelente si conoce el nombre de la función que necesita, pero de lo contrario es inútil. Una viñeta es como un capítulo de un libro o un artículo académico: puede describir el problema que su paquete está diseñado para resolver, y luego mostrarle al lector cómo resolverlo.
Las viñetas serán creadas enteramente en markdown.
Requerimientos
- Rmarkdown:
install.packages("rmarkdown")
- Pandoc
Creación de viñetas
devtools::use_vignette("MyVignette", "MyPackage")
Ahora puede editar su viñeta en ./vignettes/MyVignette.Rmd
.
El texto en su viñeta está formateado como Markdown .
La única adición al Markdown original, es una etiqueta que toma el código R, lo ejecuta, captura la salida y lo traduce a Markdown formateado:
```{r}
# Add two numbers together
add <- function(a, b) a + b
add(10, 20)
```
Se mostrará como:
# Add two numbers together
add <- function(a, b) a + b
add(10, 20)
## [1] 30
Por lo tanto, todos los paquetes que utilizará en sus viñetas deben aparecer como dependencias en ./DESCRIPTION
.