Validación y distribución de los paquetes R (Creación de paquetes en R 8ª y última parte)

Publicado el 12 junio 2020 por Daniel Rodríguez @analyticslane

Una vez finalizada la escritura de nuestro paquete, incluida la escritura de las pruebas automáticas, la documentación y las viñetas es necesario distribuirlo. En el caso de que los paquetes sean públicos y cumplan las normas del CRAN es posible enviarlo a para su aprobación. Aunque este no es el único camino para distribuir el trabajo. Ya que se pueden distribuir como archivos comprimidos, repositorios Git o, incluso, mediante un repositorio corporativo. En esta última entrada se va a explicar cómo generar los paquetes y las repasar las opciones que tenemos para la distribución de los paquetes R.

Validación del paquete

Posiblemente una de las funciones más importantes del paquete devtools es check(), con la que se puede comprobar si nuestro paquete cumple con los requisitos para subir al CRAN. Aunque este no sea el destino de nuestro paquete no es una mala idea ejecutar este comando para comprobar si falta algo, por ejemplo, la documentación de alguna función.

Para ejecutarlos simplemente debemos cargar el paquete con devtools::load_all() y posteriormente ejecutar devtools::check(). El tiempo de ejecución puede ser más o menos largo dependiendo del tamaño de nuestro paquete y los ejemplos de código que se han usado en el paquete.

La información que nos encontraremos al ejecutar el comando son los errores, advertencias y otras recomendaciones que nos hace el validador. Obviamente en el caso de que aparezca algún error lo es necesario resolverlo, al igual que las advertencias. Si todo va viene nos encontraremos con un mensaje como el siguiente.

Compilación del paquete

Ahora se puede generar el paquete, para lo que se puede usar el comando de devtools que vimos la primera semana: devtools::build(). El que creará un archivo zip o tar.gz con el contenido.

Así podemos enumerar las funciones que deberíamos lanzar antes de crear un paquete con devtools:

devtools::load_all()        # Carga el paquete
devtools::test()            # Ejecuta las pruebas automáticas
devtools::document ()       # Crea la documentación
devtools::build_vignettes() # Crea las viñetas
devtools::check()           # Valida el paquete según los estándares de R
devtools::build()           # Crea el paquete

Adicionalmente es aconsejable usar covr para medir el grado de cobertura de nuestras pruebas automáticas.

Distribución de paquetes R

Ahora ya se puede distribuir el paquete. Para esto se puede usar el archivo generado en el paso anterior u otras opciones como Git, sin descartar la publicación en el CRAN.

Instalación mediante archivo

El archivo generado en la sección anterior se puede enviar por cualquier método a los usuarios. Para instalarlo esto solo tendrán que usa el comando install.packages indicando que este se instale desde archivo en lugar de un repositorio. Por ejemplo, si tenemos nuestro paquete en la carpeta local se puede usar

install.packages("./rlane_0.1.0.tar.gz", repos = NULL, type = "source")

Algo que opcionalmente también se puede hacer desde el asistente de RStudio.

Repositorio Git

El paquete lo podemos subir a un repositorio Git, por lo que solamente tenemos que darle la ruta a nuestros usuarios para que usen el comando install_git() del paquete devtools o, en el caso de usar GitHub, install_github(). Estos comandos se encargará descargar y generar el paquete automáticamente antes de su instalación.

Repositorio privado

Esto se ha explicado en otra entrada, en el caso de trabajar en un departamento que comparte código este se puede publicar en un repositorio como el CRAN en el que se podría publicar este y otros paquetes.

Publicar en el CRAN

Si nuestro paquete cumple las normas de publicación del CRAN y consideramos que es de interés este se puede enviar para su verificación y publicación. Para lo que solamente se tienen pueden seguir los pasos indicados en el siguiente formulario https://cran.r-project.org/submit.html.

En este caso es importante que a la hora de validar el paquete no exista ningún error. Además, debemos comprobar que no existe o, ha existido, otro paquete publicado con el mismo nombre.

Conclusiones

Con esta entrega, donde hemos visto como validar y distribuir nuestros paquetes, finaliza la serie sobre la creación de paquetes en R. Al igual que hemos visto en otras ocasiones, como en la creación de paquetes Python, saber cómo empaquetar y distribuir el código no facilita la reutilización de este. Además de facilitar el uso a otros usuarios.

Imagen de Peter H en Pixabay


Publicidad