<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Automatización on Bastián Olea</title>
    <link>https://bastianolea.rbind.io/tags/automatizaci%C3%B3n/</link>
    <description>Recent content in Automatización on Bastián Olea</description>
    <generator>Hugo</generator>
    <language>es-ES</language>
    <lastBuildDate>Wed, 25 Feb 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://bastianolea.rbind.io/tags/automatizaci%C3%B3n/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Renombrar archivos desde R</title>
      <link>https://bastianolea.rbind.io/blog/2026-02-25/</link>
      <pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/2026-02-25/</guid>
      <description>&lt;p&gt;Una tarea común en al trabajar con datos (y también en la computación en general) es necesitar renombrar muchos archivos. R puede ayudarnos a realizar este tipo de tareas repetitivas, dado que, además de ser un lenguaje centrado en el análisis de datos, R también puede usarse para cualquier otro propósito!&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;inspeccionar-directorios-y-archivos-con-r&#34;&gt;Inspeccionar directorios y archivos con R&#xA;  &lt;a href=&#34;#inspeccionar-directorios-y-archivos-con-r&#34;&gt;&lt;svg class=&#34;anchor-symbol&#34; aria-hidden=&#34;true&#34; height=&#34;26&#34; width=&#34;26&#34; viewBox=&#34;0 0 22 22&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&#xA;      &lt;path d=&#34;M0 0h24v24H0z&#34; fill=&#34;currentColor&#34;&gt;&lt;/path&gt;&#xA;      &lt;path d=&#34;M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Hagamos como que tenemos una carpeta llena de archivos (pueden ser imágenes, documentos PDF, u otros documentos), en este caso la carpeta se llama &lt;code&gt;reportes&lt;/code&gt; y dentro tiene 10 documentos PDF.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redactar textos basados en datos automáticamente con R: describiendo resultados del censo de población</title>
      <link>https://bastianolea.rbind.io/blog/redactar_texto/</link>
      <pubDate>Thu, 12 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/redactar_texto/</guid>
      <description>&lt;div style=&#34;display: flex; align-items: center; gap: 15px; padding: 14px; &#xA;            background-color: #493365;&#xA;            border-radius: 6px;&#xA;            margin: 20px 40px 20px 40px;&#34;&gt;&#xA;  &#xA;  &lt;div style=&#34;flex-shrink: 0;&#34;&gt;&#xA;    &lt;i class=&#34;fas fa-triangle-exclamation&#34; style=&#34;font-size: 130%; margin-left: 2px; opacity: 1; color: #EAD2FA;&#34;&gt;&lt;/i&gt;&#xA;  &lt;/div&gt;&#xA;  &#xA;  &lt;aside style = &#34;font-size: 90%; color: #EAD2FA;&#34;&gt;&#xA;    También tengo &#xA;&lt;a href=&#34;https://bastianolea.rbind.io/blog/redactar_texto_llm&#34;&gt;una versión alternativa de este tutorial donde usamos IA para generar textos desde R.&lt;/a&gt; Pero ten en consideración que &lt;strong&gt;usar IA y aprender son cosas distintas!&lt;/strong&gt; Recomiendo aprender primero y luego apoyarte en IA.&#xA;  &lt;/aside&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&lt;p&gt;Luego de explorar o procesar un conjunto de datos, toca &lt;strong&gt;presentar los resultados&lt;/strong&gt;. Si bien esto nos hace pensar en &#xA;&lt;a href=&#34;../../../tags/visualizaci%c3%b3n-de-datos/&#34;&gt;gráficos&lt;/a&gt;, &#xA;&lt;a href=&#34;../../../tags/tablas/&#34;&gt;tablas&lt;/a&gt; o &#xA;&lt;a href=&#34;../../../tags/quarto/&#34;&gt;reportes&lt;/a&gt;, el &lt;strong&gt;texto&lt;/strong&gt; también es una forma de comunicar resultados que puede ser &lt;strong&gt;optimizada&lt;/strong&gt; mediante la programación.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testeo automatizado de aplicaciones Shiny con `{shinytest2}`</title>
      <link>https://bastianolea.rbind.io/blog/shiny_validacion/</link>
      <pubDate>Fri, 23 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/shiny_validacion/</guid>
      <description>&lt;div style=&#34;margin:auto; max-width:70%;&#34;&gt;&#xA;  &#xA;  &lt;video src=&#34;apps.mov&#34; style=&#34;border-radius:7px; max-width: 100%; display: block; margin: auto;&#34; autoplay loop&gt;&#xA;  &lt;/video&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div style = &#34;margin-left: -16px;&#34;&gt;&#xA;  &#xA;  &lt;details closed id=&#34;PageTableOfContents&#34;&gt;&#xA;    &lt;summary&gt;&#xA;      &lt;h2 class=&#34;mv0 f5 fw7 ttu tracked dib&#34; style = &#34;margin-left: 6px; font-size: 120%;&#34;&gt;Índice&lt;/h2&gt;&#xA;      &lt;/summary&gt;&#xA;    &lt;div class=&#34;pl2 pr0 mh0&#34; style = &#34;font-size: 90%; margin-top: -8px; margin-left: 16px; margin-bottom: 32px;&#34;&gt;&#xA;    &lt;nav id=&#34;TableOfContents&#34;&gt;&#xA;  &lt;ul&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#empezar-a-usar-shinytest2&#34;&gt;Empezar a usar &lt;code&gt;{shinytest2}&lt;/code&gt;&lt;/a&gt;&#xA;      &lt;ul&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#grabar-el-primer-test&#34;&gt;Grabar el primer test&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ul&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#estructura-de-carpetas-de-tests&#34;&gt;Estructura de carpetas de tests&lt;/a&gt;&#xA;      &lt;ul&gt;&#xA;        &lt;li&gt;&lt;/li&gt;&#xA;      &lt;/ul&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#creando-una-prueba&#34;&gt;Creando una prueba&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#ejecutar-un-test&#34;&gt;Ejecutar un test&lt;/a&gt;&#xA;      &lt;ul&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#expectativas-del-test&#34;&gt;Expectativas del test&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#debugging&#34;&gt;Debugging&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#resultados&#34;&gt;Resultados&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ul&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#automatizar-tests-repetitivos&#34;&gt;Automatizar tests repetitivos&lt;/a&gt;&#xA;      &lt;ul&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#ejemplo-de-test-automatizado&#34;&gt;Ejemplo de test automatizado&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ul&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#conclusión&#34;&gt;Conclusión&lt;/a&gt;&lt;/li&gt;&#xA;  &lt;/ul&gt;&#xA;&lt;/nav&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/details&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&lt;p&gt;Al igual que la &#xA;&lt;a href=&#34;https://bastianolea.rbind.io/blog/validacion_avanzada/&#34;&gt;validación de datos&lt;/a&gt;, validar &#xA;&lt;a href=&#34;https://bastianolea.rbind.io/tags/shiny/&#34;&gt;aplicaciones Shiny&lt;/a&gt; te permite crear un conjunto de pruebas para &lt;strong&gt;confirmar que tus aplicaciones funcionan bien sin tener que probarlas manualmente&lt;/strong&gt;. En la práctica, significa programar un &lt;em&gt;bot&lt;/em&gt; que apriete todos los botones de tu aplicación y obtenga capturas de pantalla que te confirmen que todo se ve bien, o realizar otros tipos de pruebas más complejas.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configura R para que haga cosas automáticamente al abrirlo</title>
      <link>https://bastianolea.rbind.io/blog/2025-11-25/</link>
      <pubDate>Tue, 25 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/2025-11-25/</guid>
      <description>&lt;p&gt;Se puede configurar R para que haga cosas automáticamente al iniciarse. Esto se logra creando un archivo &lt;code&gt;.Rprofile&lt;/code&gt;, que es un script de R que se ejecuta automáticamente cuando se inicia la sesión.&lt;/p&gt;&#xA;&lt;p&gt;Para crear un &lt;strong&gt;archivo de perfil&lt;/strong&gt; o &lt;code&gt;.Rprofile&lt;/code&gt;, usamos la función &lt;code&gt;edit_r_profile()&lt;/code&gt; del paquete &lt;code&gt;{usethis}&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;usethis&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;edit_r_profile&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Con esto se abrirá el &lt;code&gt;.Rprofile&lt;/code&gt;. Este es un archivo invisible que se guarda en tu carpeta de usuario (home directory), que se va a ejecutar en todas tus sesiones de R. Pero también es posible tener otro dentro de cada proyecto de R, que sólo aplica a ese proyecto.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Validación de datos con `{testthat}` y `{pointblank}`</title>
      <link>https://bastianolea.rbind.io/blog/validacion_datos/</link>
      <pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/validacion_datos/</guid>
      <description>&lt;a href=&#34;pointblank-1.png&#34; target=&#34;_blank&#34;&gt;&#xA;&#xA;  &lt;img src=&#34;pointblank-1.png&#34; style=&#34;border-radius: 5px; width: 80%; max-width: 700px; display: block; margin: auto; margin-bottom: 8px; margin-top: 8px;&#34;&gt;&#xA;  &#xA;&lt;/a&gt;&#xA;&lt;p&gt;En un &#xA;&lt;a href=&#34;../../../blog/validacion_basica&#34;&gt;post anterior&lt;/a&gt; hablé sobre cómo hacer validación básica de datos en R. A grandes razgos, vimos la utilidad de crear funciones que contengan pruebas simples para validar la calidad de tus datos, tales como revisar cantidad de filas, cantidad de datos perdidos, y otros.&lt;/p&gt;&#xA;&lt;p&gt;Dado que R es un lenguaje enfocado en el análisis de datos, existen varios paquetes que nos pueden ayudar con la validación de datos!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Crea planillas de Excel con formato personalizado desde R con {openxlsx}</title>
      <link>https://bastianolea.rbind.io/blog/excel_openxlsx/</link>
      <pubDate>Fri, 08 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/excel_openxlsx/</guid>
      <description>&lt;p&gt;Al terminar el procesamiento o limpieza de un conjunto de datos, usualmente necesitamos &lt;em&gt;entregar&lt;/em&gt; la base en un formato más amigable para otros colegas o usuarios/as, lo que significa: Excel. Exportar datos de R a Excel es fácil: con la función &lt;code&gt;writexl::write_xlsx()&lt;/code&gt; podemos guardar cualquier dataframe en Excel. Pero esta función hace sólo eso, y el archivo resultante es básico y hasta feo.&lt;/p&gt;&#xA;&lt;p&gt;Sin embargo, existe el &#xA;&lt;a href=&#34;https://ycphs.github.io/openxlsx/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;paquete &lt;code&gt;{openxlsx}&lt;/code&gt;&lt;/a&gt;, que además de leer y escribir archivos Excel, nos entrega funciones para generar archivos Excel desde R que contengan &lt;strong&gt;todo tipo de formato, estilo de tablas, y manipulación celda por celda&lt;/strong&gt; del archivo resultante, con lo que podemos &lt;strong&gt;generar planillas de Excel atractivas desde R.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Validación básica de datos con R</title>
      <link>https://bastianolea.rbind.io/blog/validacion_basica/</link>
      <pubDate>Thu, 07 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/validacion_basica/</guid>
      <description>&lt;div style = &#34;margin-left: -16px;&#34;&gt;&#xA;  &#xA;  &lt;details closed id=&#34;PageTableOfContents&#34;&gt;&#xA;    &lt;summary&gt;&#xA;      &lt;h2 class=&#34;mv0 f5 fw7 ttu tracked dib&#34; style = &#34;margin-left: 6px; font-size: 120%;&#34;&gt;Índice&lt;/h2&gt;&#xA;      &lt;/summary&gt;&#xA;    &lt;div class=&#34;pl2 pr0 mh0&#34; style = &#34;font-size: 90%; margin-top: -8px; margin-left: 16px; margin-bottom: 32px;&#34;&gt;&#xA;    &lt;nav id=&#34;TableOfContents&#34;&gt;&#xA;  &lt;ul&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#validación-básica&#34;&gt;Validación básica&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#funciones-de-validación&#34;&gt;Funciones de validación&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#validación-avanzada&#34;&gt;Validación avanzada&lt;/a&gt;&lt;/li&gt;&#xA;  &lt;/ul&gt;&#xA;&lt;/nav&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/details&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&lt;p&gt;Si estás procesando muchos datos y/o datos que vienen de distintas fuentes con R, validarlos puede ayudarte a encontrar problemas antes de que sea tarde! 😱&lt;/p&gt;&#xA;&lt;p&gt;¿Qué es la validación de datos? Son las distintas pruebas que crearemos para &lt;strong&gt;confirmar que nuestros datos cumplen ciertos criterios&lt;/strong&gt;. El objetivo es entregarnos la &lt;strong&gt;certeza&lt;/strong&gt; de que nuestros datos son como esperamos luego de procesarlos. Para lograrlo, ponemos a prueba nuestros datos en distintos puntos de nuestros procesos de análisis de datos.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Descargar todos los archivos de la página web del Censo 2024 con `{rvest}`</title>
      <link>https://bastianolea.rbind.io/blog/2025-07-27/</link>
      <pubDate>Sun, 27 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/2025-07-27/</guid>
      <description>&lt;p&gt;Veamos un mini ejemplo de automatización de tareas con R: los resultados del Censo 2024 vienen en 20 archivos, en 20 enlaces distintos!&lt;/p&gt;&#xA;&lt;p&gt;¿El problema? para obtenerlos, tendríamos que entrar al sitio con el navegador, ir al enlace de descargas, bajar cada uno de los 20 archivos manualmente, y guardarlos en una carpeta para poder usarlos.&lt;/p&gt;&#xA;&lt;p&gt;En un script de R, con &lt;code&gt;{rvest}&lt;/code&gt; extraemos todos los enlaces del sitio, y con &lt;code&gt;{purrr}&lt;/code&gt; descargamos todos los archivos de una 🚀&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generar múltiples gráficos automáticamente con R</title>
      <link>https://bastianolea.rbind.io/blog/ggplot_purrr/</link>
      <pubDate>Mon, 14 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/ggplot_purrr/</guid>
      <description>&lt;p&gt;Uno de los principales beneficios del análisis de datos en base a programación es que &lt;strong&gt;el código es reutilizable.&lt;/strong&gt; Esto significa que cualquier cosa que hayas hecho puedes &lt;strong&gt;reutilizarla&lt;/strong&gt;, y así ahorrar trabajo. El siguiente paso es reutilizar el código de tal forma que sirva para aplicarlo a varios casos a la vez, incluso cientos o miles de veces.&lt;/p&gt;&#xA;&lt;p&gt;La reutilización de código es súper conveniente para la visualización de datos: una vez que diseñaste un gráfico, con muy pocas modificaciones puedes adaptarlo para que funcione con una fuente de datos distintas, una fuente actualizada, o para que visualice distintas variables.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generar contenido en serie usando loops en un reporte Quarto</title>
      <link>https://bastianolea.rbind.io/blog/quarto_loop/</link>
      <pubDate>Sun, 08 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/quarto_loop/</guid>
      <description>&lt;p&gt;Una de las gracias de generar documentos en Quarto es que podemos combinar la redacción con el código. Pero esto puede ir más allá que simplemente escribir un párrafo de texto y seguido de un párrafo de código. Podemos usar código para literalmente generar texto, títulos y más.&lt;/p&gt;&#xA;&lt;p&gt;En otros tutoriales vimos cómo podemos &#xA;&lt;a href=&#34;../../../blog/quarto_reportes/#c%c3%b3digo-entre-el-texto&#34;&gt;incluir resultados del código dentro de nuestros párrafos de texto&lt;/a&gt;, por ejemplo, para que una cifra que esté dentro de una oración venga directamente del resultado de un cálculo en vez de tener que escribirle de forma manual. Pero en esta guía vamos a ver cómo podemos programar la generación masiva de títulos, párrafos y gráficos en base a una &#xA;&lt;a href=&#34;../../../blog/r_introduccion/r_intermedio/#bucles&#34;&gt;iteración, bucle o &lt;em&gt;loop&lt;/em&gt;.&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
