Introducción
Los paquetes de R son una forma poderosa de agrupar su código, datos y documentación de R en un formato reutilizable. En esta completa guía, aprenderás el flujo de trabajo completo para crear, documentar, probar, mantener y publicar paquetes de R. Tanto si planea compartir su trabajo en CRAN, GitHub u otras plataformas, dominar estas técnicas es esencial para contribuir al ecosistema de R.
Configuración de su entorno de desarrollo de paquetes
Antes de empezar, asegúrese de tener instaladas las herramientas necesarias. Los paquetes devtools, usethis y roxygen2 son fundamentales para el desarrollo moderno de paquetes.
#| label: install-packaging-tools
install.packages(c("devtools", "usethis", "roxygen2"))
library(devtools)
library(usethis)
library(roxygen2)
Creación de una estructura de paquetes
Use usethis para crear un nuevo esqueleto de paquete. Este comando configura una estructura básica de directorios con carpetas para código R, documentación, pruebas, etc.
#| label: create-package
::create_package("path/to/your/packageName") usethis
Documentación de su Paquete con roxygen2
La documentación es fundamental. Utilice roxygen2 para escribir documentación en línea que se convierta automáticamente en archivos de ayuda.
#| label: document-example
#' Add Two Numbers
#'
#' This function adds two numeric values.
#'
#' @param a A numeric value.
#' @param b A numeric value.
#' @return The sum of a and b.
#' @examples
#' add_numbers(3, 5)
<- function(a, b) {
add_numbers + b
a
}
# Generación de documentación
::document() devtools
Pruebe su paquete
Configure pruebas utilizando el paquete testthat para asegurarse de que su paquete funciona correctamente.
#| label: setup-tests
::use_testthat()
usethis
# Ejecutar pruebas
::test() devtools
Construcción y comprobación del paquete
Construya y compruebe su paquete para detectar cualquier error o advertencia.
#| label: build-check
::build()
devtools::check() devtools
Publicando su Paquete
Publicar en CRAN
Siga las directrices de CRAN y utilice devtools::release()
para someter su paquete a la revisión de CRAN.
Compartir en GitHub
Alternativamente, publique su paquete en GitHub para actualizaciones continuas y contribuciones de la comunidad.
#| label: publish-github
::use_git()
usethis::use_github() usethis
Mantenimiento y actualización de paquetes
Después de la publicación, es importante mantener su paquete actualizado:
Control de versiones:
Uso de versionado semántico para rastrear cambios. Actualice la versión de su paquete y documente los cambios en un archivo NEWS.Corrección de Errores y Mejoras:
Actualiza regularmente tu paquete en función de los comentarios de los usuarios y los cambios en las dependencias.Actualizaciones de documentación:
Asegúrese de que su documentación se mantiene actualizada a medida que evoluciona su paquete.
Documentación automatizada y creación de sitios web
Crear un sitio web para su paquete utilizando pkgdown puede hacer que su documentación sea más accesible.
#| label: pkgdown-setup
install.packages("pkgdown")
::build_site() pkgdown
Esto genera un sitio web estático para tu paquete, facilitando a los usuarios explorar la documentación y los ejemplos.
Integración continua (CI) para paquetes R
Configurar canalizaciones CI/CD ayuda a mantener la calidad de su paquete a lo largo del tiempo. Utiliza herramientas como GitHub Actions o Travis CI para ejecutar automáticamente pruebas y compilar tu paquete con cada confirmación.
Ejemplo: Flujo de trabajo de acciones de GitHub
Cree un archivo .github/workflows/R-CMD-check.yaml
con el siguiente contenido:
name: R-CMD-check
on: [push, pull_request]
jobs:
R-CMD-check:
runs-on: ubuntu-latest
container:
image: rstudio/r-base:4.1.0
steps:
- uses: actions/checkout@v2
- name: Set up R
uses: r-lib/actions/setup-r@v2
- name: Install dependencies
run: Rscript -e 'install.packages(c("devtools", "roxygen2", "testthat"))'
- name: Check package
run: R CMD check .
Este flujo de trabajo comprueba automáticamente su paquete en busca de errores y advertencias en cada push o pull request.
Diseño avanzado de paquetes
Para proyectos más complejos, considere diseñar su paquete utilizando los sistemas de objetos S3 o S4 de R:
Clases S3:
Proporcionar una forma sencilla y flexible de implementar la programación orientada a objetos en R.Clases S4:
Ofrecer definiciones de clases formales y validación, lo cual es útil para proyectos más robustos y de mayor escala.
Aprende más sobre estos sistemas en tutoriales dedicados o en la documentación oficial de R.
Errores comunes y resolución de problemas
Problemas de documentación:
Asegúrese de que todas las funciones están documentadas correctamente con roxygen2 para evitar que falten archivos de ayuda.Conflictos de espacios de nombres:
Tenga cuidado al nombrar funciones y variables para evitar conflictos con paquetes existentes.Gestión de dependencias:
Actualice regularmente las dependencias de su paquete y asegure la compatibilidad con versiones más recientes de R.Gestión de errores:
Utilizar una gestión de errores y un registro exhaustivos en el paquete para facilitar la depuración y la asistencia al usuario.
Conclusión
Desarrollar y publicar paquetes R es un proceso gratificante que le permite compartir su código y contribuir a la comunidad R. Siguiendo las mejores prácticas, desde la configuración del entorno y la documentación del código hasta las pruebas, el mantenimiento y la publicación del paquete, podrá crear paquetes sólidos y reutilizables. Esta completa guía, con secciones adicionales sobre documentación automatizada, integración continua y diseño avanzado de paquetes, proporciona todas las herramientas que necesita para tener éxito.
Lecturas adicionales
- Construcción y comprobación de paquetes de R
- Desarrollo de paquetes R con devtools
- Documentación de pkgdown
Feliz codificación, y disfrute desarrollando y compartiendo sus paquetes R!
Explorar más artículos
Aquí hay más artículos de la misma categoría para ayudarte a profundizar en el tema.
Reutilización
Cómo citar
@online{kassambara2024,
author = {Kassambara, Alboukadel},
title = {Desarrollo y publicación de paquetes R},
date = {2024-02-10},
url = {https://www.datanovia.com/es/learn/programming/r/advanced/developing-and-publishing-r-packages.html},
langid = {es}
}