Buscar..


Introducción

Este tema cubrirá la creación de paquetes R desde cero con el paquete devtools.

Observaciones

  1. Manual oficial de R para la creación de paquetes.
  2. manual de referencia de roxygen2
  3. manual de referencia de devtools

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)
}

Y aquí estará el resultado .

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 con data() y load()
  • 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 (usando Rcpp ...).
  • 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 .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow