Repensando RMarkdown (un paréntesis)

Siempre recuerdo a nuestro colega José Luis Mu, un experto en el sistema operativo Linux, al hacer una reflexión sobre la complejidad que rodea a este ecosistema, el me compartía la siguiente reflexión (una aproximación de sus palabras que la mente ya no da tanto) "...no es difícil (Linux) y si fuera así, ¿no estudiamos para atender cosas complejas?".

Así pasa con RMarkdown y en un principio con R, siempre comento que al ver el código fuente a pesar que ya tengo a cuestas quizás más de 10 diferentes lenguajes de programación sentía que veía tipografía del alfabeto chino.

Mi colega, el doctor Roussell Toraya, fue el pagano que a petición mía se enfrentó al RMarkdown al igual que otros compañeros, mientras yo sorteaba una y otra vez esta tecnología con cierto grado de convencimiento que no lo necesitaba, sin embargo ahora cursando un posgrado ya no tuve opción y lo enfrentamos, ahora, con renovados bríos.

A la mente me vienen cosas que les he dado la vuelta como la taquimecanografía, el ajedrez, el solfeo, el lenguaje ensamblador, el beisbol y quizás idiomas como el chino, japonés u otro del lejano oriente aquí pudiera incluir Markdown, aunque también me guiñó un ojo cuando vi que usando Jupyter viene inmerso para documentar los cuadernos, en este caso de Python.

Entonces entremos en materia, me parece que la instalación ya no es importante, no tiene mucho que cuidar - quizás MikTex - pero por ahora con lo que se instala desde Posit RStudio es suficiente para crear archivos de este tipo.

Pero vamos con la definición ¿qué es Markdown

"Markdown fue desarrollado en 2004 por John Gruber, y se refiere tanto a (1) una manera de formar archivos de texto, como a (2) una utilidad del lenguaje de programación Perl para convertir archivos Markdown en HTML" (Simpkin S., 2017)

Dada la definición anterior tomada de un sitio muy interesante llamado "Programming Historian" podemos concluir que la razón de la popularidad de este lenguaje de marcado es la simplicidad en su escritura.

Por ejemplo para poner una palabra en "negrita" vamos a hacer una comparación con tres tecnologías:

En HTML:

    <b>Markdown</b>

En LaTeX:

    \textbf{Markdown}

En Markdown:

    *Markdown*

Ahora para el caso del lenguaje de programación R se desarrolló la librería RMarkdown y ahora estando inmerso en el ambiente académico como estudiante la siguiente definición cobra relevancia. "R Markdown es un sistema fácil de usar que permite a los estudiantes combinar el cálculo estadístico en un entorno de su elección y el análisis escrito en un solo documento" (Baumer B. et al, 2014)   

De tal forma que al solicitarnos trabajos que requieren combinar texto, fórmulas y código por ahora de R sin lugar a dudas RMarkdown es la solución combinado con LaTeX.

Por otro lado "LaTeX, que se pronuncia "lah-tech" o "lay-tech", es una herramienta para componer documentos de aspecto profesional. Nos encontramos ante un sistema que emplea comandos para presentar contenidos complejos, sobre todo relacionados con las matemáticas como fracciones, subíndices, superíndices, matrices, derivadas parciales e integrales. " (González C., 2022).

Un primer ejemplo.

Se entiende que aunque por tendencia histórica muchos programadores crean archivos de código (programa fuente) en archivos individuales (*.c, *.cpp, *.pas, *.cs, *.py,*.r) lo más recomendable es tener algún contenedor (los proyectos por ejemplo) debido a lo complejo que se ha tornado el mundo de la programación.

Por lo que se inicia creando un proyecto en Posit RStudio, en las opciones del menú principal Nuevo Proyecto (File - New Project) presentando el siguiente cuadro de dialogo:



Para el ejemplo se elige la opción de Directorio Nuevo (New Directory), a continuación se elige el tipo de proyecto, se elige la opción de Nuevo Proyecto (New Project).



Por último se asigna el nombre del proyecto y el directorio destino.


Con esto se tiene ya creado el proyecto vacío.


En la ventana inferior derecha en la pestaña Archivos (Files), en el botón Archivo Vacío (Blank File) se agrega el archivo de RMarkdown.


Se ingresa un nuevo nombre al archivo rmd para iniciar su escritura.

Y aquí surge la doble utilidad de los documentos Markdown, documentar y programar, por ahora se ejemplifica con un archivo en formato de Adobe (PDF).

Las primeras líneas son para definición del documento Rmd.

---
title: "Re-thinking RMarkdown"
author: "Miguel Antonio Araujo González"
date: "2024-10-10"
output: pdf_document
---

Podemos observar los datos generales de este documento Rmd (título, autor, fecha y tipo de documento). 

Ahora vamos a iniciar poniendo títulos, subtítulos y un par de párrafos, con esto se inicia el documento. 

# Formula del binomio de Newton.

## Teorema, fórmula y explicación.

Antes de iniciar con la explicación formal de este tópico, sin quererlo es un
tema que enlaza dos áreas de conocimientos queridas y cercanas a mi formación
académica - profesional, la informática (ahora tecnologías de la información y
comunicación) y las matemáticas que sembraron en nosotros aquellos entrañables
maestros Chayo y Armando, de la secundaria técnica No. 5, el amor a las mismas.

En matemáticas vimos los **productos notables** *"un binomio al cuadrado es igual
a el cuadrado del primero, mas dos veces el primero por el segundo, más el
cuadrado del segundo"*, y después ya en la carrera técnica - preparatoria del
CETis 155 nos dejaron el reto de hacer un programa que desplegará el triángulo
de Pascal, siendo uno de mis primeros éxitos como programador y "compositor" de
programas (por relacionarlo con las artes).

Ternemos el símbolo # (gato coloquialmente, sharp o almohadilla) que sirve para definir títulos, un solo símbolo hace el título más grande agregando un nuevo símbolo (##) hace un título con fuente más pequeña.

Así mismo, tenemos el estilo de letra negrita (bold) denotándola con un asterisco (*) y para las letras itálicas dos de ellos (**).

Con esto ya podemos generar nuestro primer documento en PDF, para ello vamos al menú Knit que al dar clic se despliega un menú y se elige la opción Knit to PDF y en la ventana inferior Render se visualiza el proceso.


Una vez concluido en la ventana de Files se muestra el PDF generado.


Al momento estar escribiendo este artículo mi compañera Aline, me comparte como visualizar el PDF generado desde el mismo RStudio. Para ello vamos al menú Tools-Global Options.


En este caso tomamos el visor que tiene RStudio integrado. Ahora podemos visualizar en el mismo IDE la versión de este documento.


Ahora vamos a "mezclar-integrar" la tecnología de LaTeX en los siguientes párrafos:

# ¿Qué es el binomio de Newton

El **Binomio de Newton**, tambien nombrado como teorema del binomio, es especialmente
útil cuando se trata de expandir binomios elevados a potencias más altas, donde la
multiplicación manual sería tediosa. Por ejemplo, expandir $(a+b)^{5}$ manualmente
requeriría múltiples multiplicaciones, mientras que con el **Binomio de Newton**,
se puede hacer de manera más sistemática y rápida.

*El **Binomio de Newton** es una fórmula que facilita el cálculo de la potencia de un
binomio. Específicamente, se utiliza para descomponer y resolver expresiones
algebraicas de la forma $(a+b)^{n}$, donde ‘a‘ y ‘b‘ son términos y ‘n‘ es un
exponente entero positivo.*

Si bien las expresiones $(a+b)^{5}$ y $(a+b)^{n}$ tienen expresiones matemáticas para que los lenguajes tradicionales de programación procesen expresiones matemáticas en este caso las exponenciación ^ (circunflejo) se agregan otros elementos como las llaves ({}) y el signo de pesos / moneda ($) y esto es codificación LaTeX. De tal modo que los signos de pesos delimitan que es una expresión matemática y las llaves que es una potencia (superíndice), aquí vemos como se visualiza en el PDF.


Y con esto la primera gran potencialidad de RMarkdown ya que el poner esta nomenclatura en otras herramientas es complejo.

En el siguiente post se verá como se mezcla código de R que tiene un sinnúmero de librerías para muchos de los campos de la estadística y las matemáticas en general y que se puede resolver y explicar con documentos Markdown.

Hasta el siguiente post.

Miguel Araujo 

Bibliografía

Simpkin, S. (2015, Noviembre 13). Introducción a Markdown. Programming Historian. https://programminghistorian.org/es/lecciones/introduccion-a-markdown

Baumer, B., Cetinkaya-Rundel, M., Bray, A., Loi, L., & Horton, N. J. (2014). R Markdown: Integrating A Reproducible Analysis Tool into Introductory Statistics. Technology Innovations in Statistics Education, 8(1). https://doi.org/10.5070/t581020118

González, C. (2022, Diciembre 24). ¿Qué es LaTeX y cómo funciona esta útil herramienta para crear documentos? Computer Hoy. https://computerhoy.com/tecnologia/latex-como-funciona-util-herramienta-crear-documentos-1165366

Comentarios

Entradas populares de este blog

Más de dplyr y una librería nueva: sqldf

Spark (Parte 1)

R 1a Parte