Desarrollo de paquetes con R

Crea tus propias herramientas para trabajar con datos en R y compártelas!

25/8/2026

paquetes funciones avanzado

En este tutorial veremos cómo crear tu propio paquete de R, para agrupar funciones y datos en un software que puedes usar a través de varios proyectos y compartir con otras personas.

Introducción

El desarrollo de paquetes es en cierto modo uno de los objetivos finales del lenguaje R, donde puedes cristalizar tus ideas, herramientas y procesos en tu propio programa. De alguna forma, esto te convierte desde ser un simple usuari@ de R a ser parte activa de la construcción de la comunidad de R por medio de tus contribuciones!

Ciclo de desarrollo de un paquete

Siempre sentí que desarrollar un paquete era muy difícil, pero la verdad R tiene muchas herramientas para hacer este proceso lo más sencillo posible, principalmente el paquete {usethis}.

Para desarrollar un paquete de R naturalmente hay que entender la estructura de un paquete, y luego familiarizarse con el proceso de desarrollo del mismo.

Estructura de un paquete de R

Ciclo de desarrollo de un paquete de R

Luego de haber levantado los cimientos del paquete, el desarrollo es una especie de ciclo en el que vamos repitiendo la creación de funciones, documentación, creación de pruebas, chequeo del paquete, y repetir.

En detalle, el ciclo de desarrollo de un paquete es así:

  1. Creamos una función nueva con usethis::use_r()
    • Se crea un script nuevo en R/funcion.R y se abre en RStudio
    • Programamos lo básico de la función en ese script
  2. Documentamos la función con comentarios de {roxygen2} directamente encima de la función que creamos
  3. Creamos pruebas unitarias para la función creada con usethis::use_test()
    • Ponemos a prueba la función y especificamos qué debería retornar, para asegururarnos ahora y en el futuro de que funciona correctamente
  4. Chequeamos que todo esté bien en el paquete con devtools::check()

Veremos todos estos pasos y más en este tutorial!

Pasos previos

Antes de iniciar el desarrollo de un paquete, necesitamos confirmar que tenemos los paquetes necesarios. Como mínimo, serían {devtools}, {usethis} y {pak}.

install.packages(c("devtools", "usethis", "pak"))
devtools::has_devel()

devtools::dev_sitrep()

También necesitaremos tener configurado y funcionando Git en nuestra sesión de R, para poder ir respaldando las versiones del paquete, y también para hacerlo disponible e instalable en internet. Podemos revisar esto con la siguiente función:

usethis::git_sitrep()

Si no has configurado Git con R aún, revisa este tutorial.

Creación de un paquete de R

pak::pkg_name_check("nombre")
usethis::create_package("nombre")

# revisar que todo esté bien
devtools::check()

Documentos mínimos

usethis::use_readme_rmd()
usethis::use_mit_license()
# usethis::use_gpl3_license()

Repositorio Git

En este punto se recomienda empezar a respaldar tu código con Git. Para eso creamos el repositorio local, guardando el estado del código en una nueva versión:

# crear repositorio local
usethis::use_git()

Los avances futuros los irás guardando regularmente en versiones nuevas, y así mantendrás un control de versiones que te permitirá explorar estados pasados, deshacer cambios en el tiempo, ir registrando cambios nuevos al código, y más.

Pero el uso principal que le daremos al repositorio de control de cambios de Git es la posibilidad de mantener un positorio remoto que guarde tus versiones en internet por medio de GitHub. Github es la página que usa la mayoría de desarrolladores/as para subir su software, respaldarlo en la nube y hacerlo visible para el mundo. De este modo, otras personas podrán navegar tu código, clonarlo en sus computadores para ofrecer mejoras o funcionalidades nuevas, e instalar el paquete en sus computadores.

# crear repositorio remoto
usethis::use_github()

Instalación local del paquete

pak::local_install()

Crear funciones para el paquete

https://bastianolea.rbind.io/blog/r_introduccion/r_intermedio/

# funciones

# crear función
usethis::use_r("territorios")

Explicitar dependencias

# agregar dependencia a un paquete
usethis::use_package("dplyr")
usethis::use_package("cli")

Revisiones

# revisar que todo esté bien
devtools::check()

# recargar el paquete
devtools::load_all()

Pruebas unitarias

https://bastianolea.rbind.io/blog/validacion_avanzada/#validación-con-testthat

usethis::use_testthat()

# crear test para una función
use_test()
usethis::use_test("territorios")

# realizar todas las pruebas
devtools::test()

Incluir datos

# crear datos del paquete
usethis::use_data_raw("territorios")

Iteración

# crear función
usethis::use_r("comunas")

# recargar paquete
devtools::load_all()

# crear prueba para la función
usethis::use_test("comunas")

# realizar todas las pruebas
devtools::test()

y repetir!

# documentación
# escribir documentación
devtools::document()

# crear viñeta
usethis::use_vignette("territorial.qmd") # si se llama como el paquete tiene un rol distinto

# instalar el propio paquete
pak::local_install()
knitr::knit("README.Rmd")

# sitio del paquete
# usethis::use_pkgdown()
# usethis::use_pkgdown_github_pages()

# reconstruir sitio
pkgdown::build_site()
# usethis::use_github_pages()
# poner enlace en _pkdown.yml y description
# usethis::use_github_action("pkgdown")
# cuando se haga push se construirá el sitio

Publicaciones sobre avanzado

Fecha de publicación:
25/8/2026
Extensión:
5 minute read, 879 words
Categorías:
Tutoriales
Tags:
paquetes funciones avanzado
Ver también:
`{territorial}`: un paquete de R para trabajar con datos de comunas y regiones de Chile
`{rutera}`: un paquete de R para limpiar y procesar RUTs chilenos
Limpieza y validación de RUT en R