3 Métodos computacionales
En este capítulo se presentan los antecedentes y conceptos aplicados en el desarrollo de metasurvey. También se abordan conceptos de investigación reproducible, la importancia de R como herramienta para el análisis de datos y la comunidad estadística, la revisión de paquetes para el procesamiento de encuestas por muestreo y la relevancia de la especificación diseño muestral. Se mencionan paquetes y herramientas en las cual fue inspirado el desarrollo del paquete y herramientas similares junto a sus limitaciones.
La generación de indicadores sociales se ha convertido en una tarea fundamental tanto para la toma de decisiones a nivel de una empresa, para la política pública así como para la investigación. Sin embargo, este proceso puede resultar complejo, ya que requiere conocimiento específico sobre el formulario de la encuesta y formas de definir ciertos índices o variables auxiliares que no necesariamente son triviales y dependen de cierta forma de la experiencia de los usuarios. Este proceso de generación de indicadores frecuentemente carece de transparencia o documentación adecuada, en parte por la ausencia de herramientas apropiadas y en parte por la falta de una cultura de reproducibilidad, ya que generalmente solo se hace referencia a los datos y no al proceso completo de generación de los indicadores.
3.1 Desarrollo de paquetes en R
R es un lenguaje de código abierto con una gran comunidad de usuarios en diversas áreas de investigación. Esto ha permitido el desarrollo de una extensa colección de paquetes que facilitan tareas de análisis de datos, visualización, bioinformática, aprendizaje automático y otras ramas afines a la estadística. El ecosistema de R se destaca por:
Repositorios centralizados: CRAN (Comprehensive R Archive Network) actúa como el principal repositorio de paquetes verificados y estables. Otros repositorios especializados incluyen Bioconductor para análisis biológicos y rOpenSci para ciencia abierta (Gentle, 2009).
Estándares de calidad: Los paquetes deben pasar rigurosas verificaciones antes de ser aceptados en CRAN, incluyendo pruebas en múltiples plataformas, documentación completa y coherencia en el código.
Comunidad activa: La comunidad de R mantiene foros activos, conferencias regulares (useR!, rstudio::conf) y grupos de trabajo que continuamente mejoran el ecosistema (R Core Team, 2023).
3.1.1 ¿Por qué desarrollar un paquete en R?
Desarrollar un paquete en R posee varias ventajas:
- Reutilización de código: Es posible que alguien ya haya escrito una función o paquete que es de utilidad. Por lo tanto, siempre es bueno buscar si existe algún paquete que ya tenga las funcionalidades requeridas.
- Compartir código: La comunidad de R es muy activa y siempre está dispuesta a compartir código, lo que fomenta el desarrollo continuo de paquetes.
- Colaboración: El trabajo colaborativo es esencial en el desarrollo de paquetes en R, permitiendo que diferentes personas aporten nuevas funcionalidades, correcciones de errores, entre otros.
3.1.2 Elementos básicos de un paquete en R
La estructura de un paquete en R sigue convenciones estrictas que facilitan su distribución y mantenimiento. Los componentes esenciales incluyen:
- Estructura de directorios:
R/: Código fuente en R.man/: Documentación en formato .Rd.src/: Código en otros lenguajes (C++, Fortran).tests/: Pruebas unitarias.data/: Conjuntos de datos.vignettes/: Tutoriales y ejemplos extensos.
- Archivos de control:
DESCRIPTION: Metadatos del paquete.NAMESPACE: Control de exportación de funciones.LICENSE: Términos de uso y distribución..Rbuildignore: Archivos excluidos del build.
- Control de versiones:
- Sistema de versionado semántico (MAJOR.MINOR.PATCH).
- Integración con Git/GitHub.
- Registro de cambios en
NEWS.md.
Documentación: es esencial para que los usuarios puedan entender el funcionamiento de cada herramienta dentro del paquete. Se realiza utilizando el sistema de documentación de R, basado en comentarios en el código fuente.
Pruebas: es importante que el paquete tenga pruebas que verifiquen que las funciones se comportan según lo esperado. Las pruebas se realizan utilizando el paquete testthat (Wickham, 2011).
Control de versiones: permite llevar un registro de los cambios realizados en el paquete. El sistema de control de versiones más utilizado en la comunidad de R es
git.Licencia: Permite a los usuarios utilizar, modificar y distribuir el paquete. La licencia más utilizada en la comunidad de R es la licencia MIT.
El proceso de subir un paquete a CRAN puede llegar a ser tedioso, ya que se deben cumplir ciertos requisitos revisados por los mantenedores de CRAN. Sin embargo, es un proceso valioso, ya que permite que el paquete sea utilizado por una gran cantidad de usuarios.
El proceso de chequeo fue automatizado por medio de GitHub Actions, por lo que cada vez que se realiza un cambio en el repositorio, se ejecutan los chequeos de CRAN y se notifica si el paquete cumple los requisitos para ser publicado. En caso de que no cumpla con los requisitos, se notifica los errores y el mismo no puede ser incluido en la rama principal del repositorio hasta que estos errores sean corregidos.
Todo el proceso y código fuente del paquete se encuentra disponible en el repositorio de GitHub del paquete. Si está interesado en colaborar con el desarrollo del paquete, puede consultar la guía de contribución.
3.2 Paradigmas de programación en R
R es un lenguaje de programación que permite realizar programación funcional y orientada a objetos (Chambers, 2014), lo que permite que los usuarios puedan utilizar diferentes paradigmas de programación para resolver problemas. A continuación, se presentan los conceptos básicos de la programación funcional y orientada a objetos en R.
3.2.1 Programación funcional
La programación funcional es un paradigma de programación que se basa en el uso de funciones para resolver problemas. En R, las funciones son objetos de primera clase, lo que significa que se pueden utilizar como argumentos de otras funciones, se pueden asignar a variables, entre otros (Wickham, 2019, 204-81). A continuación, se presentan los conceptos básicos de la programación funcional en R.
Funciones de orden superior: En R, las funciones de orden superior son funciones que toman como argumento una o más funciones y/o retornan una función. Un ejemplo de una función de orden superior en R es la función
lapplyque toma como argumento una lista y una función y retorna una lista con los resultados de aplicar la función a cada elemento de la lista.Funciones anónimas: En R, las funciones anónimas son funciones que no tienen nombre y se crean utilizando la función
function. Un ejemplo de una función anónima en R es la funciónfunction(x) x^2que toma como argumentoxy retornax^2.Funciones puras: En R, las funciones puras son funciones que no tienen efectos secundarios y retornan el mismo resultado para los mismos argumentos. Un ejemplo de una función pura en R es la función
sqrtque toma como argumento un número y retorna la raíz cuadrada de ese número.
Este paradigma de programación es muy útil para realizar análisis de datos, ya que permite que los usuarios puedan utilizar funciones para realizar operaciones sobre los datos de manera sencilla y eficiente. Dentro de metasurvey no existe una presencia fuerte de programación funcional, sin embargo, se utilizan algunas funciones de orden superior para realizar operaciones sobre los datos.
3.2.2 Programación orientada a objetos
La programación orientada a objetos es un paradigma de programación que se basa en el uso de objetos para resolver problemas. En R, los objetos son instancias de clases que tienen atributos y métodos (Wickham, 2019, 285-370; Mailund, 2017). A continuación, se presentan los conceptos básicos de la programación orientada a objetos en R.
Clases y objetos: En R, las clases son plantillas que definen la estructura y el comportamiento de los objetos y los objetos son instancias de clases. En R, las clases mas utilizadas provienen del sistema de programación orientada a objetos llamado
S3las definen utilizando la funciónsetClassy los objetos se crean utilizando la funciónnew. También se pueden utilizar las clases del sistemaS4aunque este tiene una sintaxis mas compleja y no es tan utilizado.Atributos y métodos: En R, los atributos son variables que almacenan información sobre el estado de un objeto y los métodos son funciones que permiten modificar el estado de un objeto. En R, los atributos se definen utilizando la función
setClassy los métodos se definen utilizando la funciónsetMethod.
Dentro de metasurvey se utiliza la programación orientada a objetos para definir las clases de los objetos que se utilizan para representar los datos de las encuestas mediante la creación de una clase específica llamada Survey que permite, además de almacenar los datos de la encuesta, añadir atributos y métodos que permiten realizar operaciones sobre los datos de manera sencilla y eficiente.
De forma similar se definen las clases Step, Recipe y Survey, entre otras, elementos cruciales en el ecosistema de metasurvey donde se definen los pasos de preprocesamiento, recetas de preprocesamiento y flujos de trabajo respectivamente. En este caso particular se utiliza el paquete R6 (Chang, 2022) que permite definir clases de manera intuitiva y eficiente, además de permitir la herencia de clases y la definición de métodos y atributos de manera sencilla.
3.2.3 Meta-programación
La meta-programación es un paradigma de programación que se basa en el uso de código para manipular código (Wickham, 2019, 373-500; Thomas Mailund, 2017). En R, la meta-programación se realiza utilizando el sistema de meta-programación de R que se basa en el uso de expresiones, llamadas y funciones. A continuación, se presentan los conceptos básicos de la meta-programación en R.
Expresiones: En R, las expresiones son objetos que representan código y se crean utilizando la función
quote(). Un ejemplo de una expresión en R es la expresiónquote(x + y)que representa el códigox + y.Llamadas: En R, las llamadas son objetos que representan la aplicación de una función a sus argumentos y se crean utilizando la función
call(). Un ejemplo de una llamada en R es la llamadacall("sum", 1, 2, 3)que representa la aplicación de la funciónsuma los argumentos1,2y3.Funciones: En R, las funciones son objetos que representan código y se crean utilizando la función
function(). Un ejemplo se puede ver en Código 3.1.
x e y y retorna la suma de los mismos.
Código
function(x, y) {
x + y
}En metasurvey se utiliza la meta-programación para generar código de manera dinámica y realizar operaciones sobre los datos de manera eficiente. En particular, se utiliza la función eval() para evaluar expresiones y la función substitute() para reemplazar variables en expresiones. Además, se utilizan las funciones lapply(), sapply(), mapply() y do.call() para aplicar funciones a listas y vectores de manera eficiente. En general, la meta-programación es una técnica muy útil para realizar operaciones sobre los datos de manera eficiente y sencilla.
3.3 Investigación reproducible
El concepto de investigación reproducible ha cobrado relevancia en los últimos años, tanto en la academia como en la industria y esto se debe a la fricción que puede llegar a existir al momento de presentar resultados de investigación o generación indicadores relevantes para la toma de decisiones debido al proceso de generación de los mismos. Dentro de las diferentes disciplinas generar ambientes de trabajo reproducibles puede llegar a ser un desafío, ya que en la mayoría de los casos se utilizan diferentes herramientas, lenguajes de programación y bases de datos.
En la actualidad existen diferentes revistas científicas que promueven la investigación reproducible, herramientas, guías para buenas prácticas para trabajar con datos y código fuente como Sumatra (Davison y Huth, 2012), implementaciones de programación literal (Knuth, 1984) como RMarkdown (Allaire et al., 2024) o Jupyter Notebook (Kluyver et al., 2024) y diferentes implementaciones para gestionar dependencias de software como Anaconda (Anaconda, 2024), aunque algunas de ellas se han vuelto herramientas de pago o ya no existen en la actualidad, más referencias y casos de uso pueden encontrarse en (Stodden, Leisch, y Peng, 2014).
Antes de continuar es necesario definir conceptos fundamentales en el ámbito de la investigación reproducible, tales como la Reproducibilidad que refiere a la capacidad de poder obtener los mismos resultados de un estudio, experimento o un cálculo en particular. Si bien en la actualidad la reproducibilidad se incentiva en algunas revistas científicas es de suma importancia en otras instancias donde se comparten datos, se monitorean indicadores entre otro. Cuando se comparten datos o ya sea de una encuesta o datos recolectados para una investigación, donde en la mayoria de los casos no se incluye el código fuente para realizar las transformaciones. Aún compartiendo el código fuente, esto aún no es suficiente para poder reproducir un estudio o un indicador por incompatibilidades de versiones de software, cambios en la estructura de los datos interpretaciones de los datos, estilos de programación, entre otros pudiendo llevar mucho tiempo y esfuerzo para poder replicar un resultado.
El proceso de tratamiento de datos y limpieza forma parte de lo que se conoce como publicaciones grises (Vilhuber, 2020). Este concepto se refiere a la publicación de datos, código y reportes que no son publicaciones formales, pero son esenciales para generar conocimiento científico. En su mayoría al no tener una revisión por pares o una forma estandarizada esto se incluye de forma muy dispar o sin ningún tipo de documentación para poder ser reproducido y esto forma una gran parte de la investigación científica que no se encuentra aprovechada.
Existen diversas iniciativas destinadas a fomentar la reproducibilidad en la ciencia, lo que ha llevado a las revistas a establecer políticas de datos y código abierto. Sin embargo, persisten desafíos en la generación de indicadores sociales, ya que como se mencionó anteriormente no basta con hacer referencia a los datos, como se señala en (Bechhofer et al., 2013); además de publicar el artículo junto a los datos, es necesario vincular los objetos de investigación (Research Objects RO), existen diferentes plataformas que permiten la publicación de estos objetos como Zenodo y Figshare o OSF que permiten la integración de datos, código e interacción con repositorios con control de versiones como GitHub o GitLab.
De conceptos generales sobre reproducibilidad es importante contar con un flujo de trabajo (Workflow managment System (Prabhu y Fox, 2020)) para la obtención de estimadores en el procesamiento de encuestas por muestreo ya que el indicador final es el resultado de una serie de pasos que se deben seguir de manera ordenada y documentada para poder ser auditados y replicados en diferentes contextos, inspirado en (Sandve et al., 2013) se pueden considerar algunas buenas prácticas para la generación de indicadores:
Para cada resultado, se debe tener un respaldo de como fue construido: Al trabajar con lenguajes de programación como R, los script de código fuente son un respaldo de como obtener cierto resultado, sin embargo, esto puede estar ligado a tu estilo de programación y la versión de los paquetes que se utilizan.
Crear manuales en la manipulación de datos: Es importante resumir cada paso por más mínimo que sea en la transformación de variables, esto permite entender todo el proceso de generación de un indicador.
Guardar las versiones de los paquetes utilizados: Al trabajar con R, es importante guardar las versiones de los paquetes que se utilizan, esto permite que en un futuro se pueda replicar el proceso de generación de indicadores, para esto puede utilizarse herramientas como
renv(Ushey y Wickham, 2023) un paquete que permite crear ambientes locales con versiones específicas de paquetes de R,venvque son ambientes virtuales en python o Dockerpara poder emular un ambiente de trabajo en diferentes sistemas operativos.Guardar pasos intermedios, en un formato estándar: Al trabajar con encuestas por muestreo y para crear indicadores sencillos se realizan dos grandes tipos de operaciones: crear grupos o categorías o realizar operaciones matemáticas, es importante guardar estos pasos en un formato estándar para poder ser reutilizados en diferentes contextos.
Compartir las ejecuciones y scripts: Es importante que los scripts de código fuente estén disponibles para que puedan ser auditados y replicados en diferentes contextos.
3.3.1 Conceptos clave
metasurvey se basa en las buenas prácticas mencionadas anteriormente y permite crear herramientas de flujo de trabajo siguiendo los siguientes principios:
Reusable: Se separa el proceso de transformación de variables en
Stepsque refiere a transformaciones de columnas, estos procedimientos pueden ser comunes tanto en diferentes encuestas como en diferentes indicadores. EstosStepspueden ser reutilizados en diferentesRecipespara calcular indicadores de mercados de trabajo, pobreza, e incluso aplicarlos en varias encuestas simultáneamente mediante unWorkflow.Repetible: Al tener un proceso definido en un
Workflow, es posible repetir el proceso de generación de indicadores de la misma manera y automatizar la generación de reportes.Referenciable y Acreditable: Al contar con un
Workflow, es posible hacer referencia al proceso de generación de indicadores especificando todos los pasos seguidos y el autor o equipo que lo realizó. Además, se puede acreditar a los autores de losStepsyRecipesque se utilizaron en el proceso.
3.3.2 Workflow reproducible
El concepto de Workflow no es nuevo y exclusivo en la comunidad científica, en la actualidad en la industria de la ciencia de datos se han desarrollado diferentes herramientas para la gestión de flujos de trabajo para el procesamiento de datos, con diferentes enfoques y objetivos. metasurvey se inspira en diferentes herramientas como Apache AirFlow que es una plataforma de orquestación de flujos de trabajo de código abierto, Great Expectations que es una biblioteca de validación de datos para la generación de reportes de calidad de datos y Make que es una herramienta de automatización de flujos de trabajo que se basa en la definición de reglas y dependencias.
En el ámbito del aprendizaje automático existe un gran esfuerzo para poder desgranar y documentar los modelos conocido como Model Cards (Mitchell et al., 2019) donde se hace un detalle de los algoritmos utilizados, las métricas de evaluación, los datos utilizados y su procesamiento, siendo esto el análogo a los Steps y Recipes de metasurvey. Este concepto se ha extendido siendo un estándar en la industria y siendo adoptado por diferentes organizaciones como Google y Hugging Face.
Tomando en cuenta estos conceptos, metasurvey tiene disponible la posibilidad de generar, compartir y visualizar los flujos de trabajo de manera gráfica permitiendo la transparencia y auditabilidad de los procesos de generación de indicadores.
3.3.3 Investigación reproducible en R
Dentro de CRAN existe una guía sobre conjunto de paquetes y herramientas con objetivos comunes denominado Task Views que agrupa paquetes de R que se utilizan para un propósito específico. En el Task View de Reproducible Research se encuentran diferentes paquetes que permiten la generación de reportes dinámicos, la gestión de flujos de trabajo y la generación de documentos interactivos aunque también existen herramientas para la gestión de flujos de trabajo generales como targets (Landau, 2021) y drake (Landau, 2018), metasurvey fue inspirado en los conceptos y la forma de trabajo de estos paquetes.
Los conceptos de meta-programación y programación orientada a objetos fue inspirado en el paquete mlr3pipelines (Binder et al., 2021) que permite la creación de flujos de trabajo para el preprocesamiento de datos y la generación de modelos de aprendizaje automático, aquí se definen PipeOps que son operaciones que se pueden aplicar a los datos y se pueden combinar en un Graph que define el flujo de trabajo para ello se definen clases y métodos que permiten una fácil extensión por parte del usuario y la creación de flujos de trabajo complejos.
Dentro de la comunidad existen organizaciones como rOpenSci que promueven la ciencia abierta y la reproducibilidad en la investigación científica, proporcionando herramientas y guías para promover la ciencia abierta mediante R. Esta organización promueve la creación de paquetes donde además de la guías sobre el desarrollo de paquetes y la revisión de los mismos, se promueve la creación de paquetes que sean de utilidad para la comunidad científica definiendo estándares de calidad y documentación. Para formar parte de rOpenSci, se sigue una evaluación entre pares y una revisión de la calidad del paquete, además de la documentación y la calidad del código complementado con tests automatizados.
3.4 Herramientas para el desarrollo de paquetes en R
Cualquier usuario puede desarrollar un paquete en R, aunque existen diferentes guías y estándares para el desarrollo de paquetes en R, como se menciona en (Wickham y Bryan 2023), además de la guía de rOpenSci (rOpenSci et al., 2024) que promueve la creación de paquetes que sean de utilidad para la comunidad científica definiendo estándares de calidad y documentación.
Para el desarrollo de metasurvey se utilizaron paquetes como usethis (Wickham, Bryan, et al., 2024) que permite la creación de paquetes en R, roxygen2 (Wickham, Danenberg, et al., 2024) que permite la documentación de funciones y la creación de manuales, testthat (Wickham, 2011) que permite la creación de tests automatizados, pkgdown (Wickham, Hesselberth, et al., 2024) que permite la creación de sitios web para paquetes de R, devtools (Wickham et al., 2022) que permite la instalación y la carga de paquetes en R, renv (Ushey y Wickham, 2023) que permite la creación de ambientes locales con versiones especificas de paquetes de R junto a herramientas herramientas como pre-commit que permite la ejecución de scripts antes de realizar un commit en un repositorio de git esto con el fin de mantener la calidad del código y la documentación antes de realizar un cambio en el repositorio. De forma conjunta se utilizó GitFlow que es una metodología de trabajo con git que permite la colaboración y la integración continua de los cambios en un repositorio de git. Para la automatización de los tests en diferentes sistemas operativos se utilizó GitHub Actions que permite la ejecución de scripts en diferentes sistemas operativos y la generación de reportes de cobertura de código con Codecov.
Todo estas herramientas permiten que la creación de paquetes sea sencilla y permita a los usuarios enfocarse en la implementación con cierto grado de calidad y documentación, además de permitir la colaboración y la integración continua de los cambios en un repositorio de git.
Implementación de tests automatizados
El paquete incluye tests automatizados creados con testthat, lo que asegura la robustez del código fuente al ser utilizado en diversos contextos. Un ejemplo es el test de la función extract_time_pattern, que analiza el nombre de una encuesta y retorna su tipo, año y periodicidad. Esta función clave utiliza expresiones regulares para manejar distintos formatos de tiempo y es fundamental para tareas como definir la edición de encuestas o emparejar réplicas bootstrap. Su implementación completa puede encontrarse aquí: extract_time_pattern.
Código
test_that(
"Probar extraer time pattern anual",
{
testthat::expect_equal(
metasurvey:::extract_time_pattern("ECH_2023"),
list(
type = "ECH",
year = 2023,
periodicity = "Annual"
)
)
}
)Al tener una serie de test automatizados como el presentado en el código 3.2 permite que los mismos se ejecuten ante una nueva versión del código fuente y poder revisar si implementaciones anteriores funcionan de la misma manera luego de realizar estos cambios. Para el envió a CRAN se realizan estos test automático y una serie de pruebas de calidad y documentación para que el paquete sea aceptado en CRAN. Actualmente metasurvey no tiene errores, mensajes de advertencia o notas en CRAN, la cobertura del código es bastante baja ya que realizar test para todas las funciones es un trabajo arduo y que requiere tiempo, sin embargo en futuras versiones se espera tener una cobertura del código mayor al 80%. La cobertura puede ser verificada en el siguiente enlace: codecov.
Documentación
Para la documentación se utilizó roxygen2 que permite la documentación de funciones y la creación de manuales, además de pkgdown que permite la creación de sitios web para paquetes de R, esto permite que los usuarios puedan tener una guía de referencia para utilizar el paquete y que los desarrolladores puedan tener una guía de referencia para la implementación de nuevas funciones o la modificación de las existentes.
load_survey con las etiquetas necesarias para la generación de la documentación.
Código
#' @title Load survey
#' @param path Path to the survey file
#' @param svy_type Type of survey
#' @param svy_edition Edition of the survey
#' @param svy_weight Weight of the survey
#' @param svy_psu Primary sampling unit
#' @param ... Additional arguments
#' @param bake Logical
#' @return Survey object
#' @keywords preprocessing
#' @export
load_survey <- function(
path = NULL,
svy_type = NULL,
svy_edition = NULL,
svy_weight = NULL,
svy_psu = NULL,
..., bake = FALSE) {
# Ejemplo no mostrado debido a la extensión del
# código puede ser consultado en
# el repositorio de GitHub
}Como se puede observar en el código 3.3, la documentación de las funciones se realiza con comentarios en el código fuente, esto permite que roxygen2 pueda generar la documentación de las funciones y los manuales de manera automática, simplemente hay que añadir comentarios con ciertas etiquetas que dependiendo si la función es exportada o no, es un requisito para la aceptación en CRAN que las funciones que se exporten estén documentadas y que la documentación sea clara y concisa. La documentación puede ser consultada en el siguiente enlace: Documentación de metasurvey o en la ayuda de R con ?load_survey.
Pruebas en diferentes sistemas operativos y versiones de R junto a GitHub Actions
En muchos casos, los paquetes de R pueden tener problemas de compatibilidad con diferentes versiones de R o con diferentes sistemas operativos, para evitar estos problemas se utilizó GitHub Actions que permite la ejecución de scripts en diferentes sistemas operativos y la generación de reportes de cobertura de código con Codecov. En el caso de metasurvey se realizan pruebas en diferentes versiones de R y en diferentes sistemas operativos como Windows, MacOS y Linux, esto permite que el paquete sea compatible con diferentes versiones de R y sistemas operativos.
Todo esto fue realizado en GitHub Actions donde se define un archivo de configuración que permite definir en que situaciones se deben de ejecutar los test junto a las diferentes plataformas y versiones de R. En este caso al utilizar GitFlow que es una metodología de trabajo con git que permite la colaboración y la integración continua de los cambios en un repositorio de git, se puede tener una rama de desarrollo y una rama de producción, donde en la rama de desarrollo se realizan los cambios y se ejecutan los test y en la rama de producción se realiza la publicación en CRAN. Todo esto permite que el paquete sea robusto y que los cambios sean integrados de manera continua en el repositorio. Para la integración de una nueva versión se realizan pull request que son un pedido de integración de cambios en la rama de desarrollo, esto permite que los cambios sean revisados y auditados antes de ser integrados en la rama principal.
Código
on:
push:
branches:
- main
- develop
pull_request:
branches: [develop]
name: R-CMD-check
jobs:
R-CMD-check:
runs-on: ${{ matrix.config.os }}
name: ${{ matrix.config.os }} (${{ matrix.config.r }})
strategy:
fail-fast: false
matrix:
config:
- {os: macos-latest, r: 'release'}
- {os: windows-latest, r: 'release'}
- {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'}
- {os: ubuntu-latest, r: 'release'}
- {os: ubuntu-latest, r: 'oldrel-1'}
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
R_KEEP_PKG_SOURCE: yes
steps:
- uses: actions/checkout@v4
- uses: r-lib/actions/setup-pandoc@v2
- uses: r-lib/actions/setup-r@v2
with:
r-version: ${{ matrix.config.r }}
http-user-agent: ${{ matrix.config.http-user-agent }}
use-public-rspm: true
- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: any::rcmdcheck
needs: check
- uses: r-lib/actions/check-r-package@v2
with:
upload-snapshots: trueComo se puede observar en el código 3.4, se define un archivo de configuración que permite definir en que situaciones se deben de ejecutar los test junto a las diferentes plataformas y versiones de R, esto es lanzado automáticamente cuando se hace un cambio en la rama de desarrollo o en la rama de producción puede aquí verse el historial y ejemplos del mismo paquete.
En capítulos posteriores se presentará la implementación de conceptos de workflows, meta-programación y metodologías de estimación de varianzas en metasurvey para la generación de indicadores sociales.