Guía hiper-básica a RMarkdown (parte 2) | Macarena Quiroga

Guía hiper-básica a RMarkdown (parte 2)

En esta parte 2 vamos a ver cómo configurar el documento para obtener distintos resultados.

En el post anterior vimos qué es RMarkdown y cuáles son sus partes. Pero hay mucho, mucho más para hacer: la gran ventaja de hacer cosas con código, a diferencia de hacerlas con una interfaz gráfica (como Word, por ejemplo) es la flexibiidad y la versatilidad. Casi cualquier cosa que quieras hacer, seguro que existe alguna vuelta para ello. En este post vamos a ver tres usos específicos de RMarkdown que van a hacerte la vida más fácil.


Controlar qué se ve y qué no

En un documento RMarkdown hay esencialmente dos grandes partes: los bloques de código (denominados chunks) y el texto plano propiamente dicho. Dentro de los chunks insertamos el código que queremos ejecutar, tal como haríamos en un script de R. Sin embargo, no siempre nos interesa mantener el código en el documento: si el objetivo del documento es comunicar los resultados de un análisis estadístico, tal vez nos interesa solamente tener las tablas y los gráficos, y el texto plano donde se explican a interpretan esos resultados.

La sección que controla qué se muestra y qué no en un documento RMarkdown es la primera línea del chunk:

Esa primera línea de apertura comienza con tres tildes graves ``` y luego el segmento de configuración entre llaves. El primer elemento indica siempre el lenguaje de programación en el cual está escrito ese código1; a continuación se puede colocar una palabra que describa el contenido de ese código (este paso es opcional, pero altamente recomendado). A continuación de esa palabra, se incluirán las configuraciones específicas para ese bloque de código, separadas por comas. Las más comunes son las siguientes:

  • echo = TRUE/FALSE: esta opción define si el código se muestra o no en el documento (TRUE para mostrarlo, FALSE para no mostrarlo). Esto no cambia si se muestra el resultado (output) del código: por ejemplo, podés generar un gráfico y ocultar el código que lo generó.

  • message = TRUE/FALSE: con esta opción se controlan (TRUE muestra y FALSE oculta) los mensajes de algunas funciones, como por ejemplo la descripción de los paquetes que se cargan junto con otros:

  • warning = TRUE/FALSE: similar al anterior, pero para las advertencias, por ejemplo los casos en los que se ignoran valores NA para determinados cálculos.

Entonces, si decidimos no mostrar un determinado bloque de código (sí su resultado), queremos ocultar los avisos pero mantener las advertencias, se vería así:

Podés encontrar más opciones de configuración en RMarkdown: The definitive guide (en inglés).


Definir características visuales de los gráficos

Así como definimos cómo se va a mostrar (o no) el código que escribimos, también podemos definir las características visuales de los gráficos que vamos a generar, como el tamaño o la posición relativa en la página. Algunas opciones útiles:

  • fig.align te permite definir la posición relativa; se completa con 'default', 'left', 'right', 'center'.
  • fig.width y fig.height te permiten definir el ancho y alto respectivamente del gráfico, en inches (pulgadas).
  • dpi define la resolución del gráfico (dot per inch, entonces un pixel es dpi*inches).
  • fig.cap especifica el epígrafe (caption en inglés) y fig.alt el texto alternativo (en caso que no se haya definido, se utilizará el epígrafe).

Esas son las más comunes, podés encontrar otras más detallistas en el libro de referencia.


Configuración general del documento

Controlar lo que hace un bloque de código es muy lindo, pero ¡¿tengo que hacer eso para todos y cada uno de los bloques?! Pues no, mi ciela: RMarkdown permite que configuremos el comportamiento de todos los bloques de código en uno solo. La clave está en nombrar ese bloque de código con el nombre setup, de esta forma:

Desarmemos un poco ese bloque de código:

  • La primera palabra, knitr, es el nombre del paquete que controla el tejido de los archivos, como vimos en el post anterior. Cada vez que veas el símbolo ::, eso significa que la función que está a la derecha (opts_chunk en este caso) pertenece al paquete que está a la izquierda (knitr).
  • La función opts_chunk permite controlar, como su nombre sugiere, las opciones de configuración de cada chunk, es decir, de cada bloque de código. Acá podés poner todas las opciones que mencionamos más arriba, tanto para el código como para los gráficos; podés leer un poco más acá o ejecutando el siguiente código es la consola: str(knitr::opts_chunk$get()).


Cierre

Espero haberte convencido de que RMarkdown es una gran herramienta y que con un poco de paciencia es fácil de entender. Como toda herramienta versátil, hay trillones de posibilidades de configuraciones distintas, pero mi sugerencia es que no te compliques la vida y que te limites a las opciones que te sirven para lo que vos necesitás. No es necesario conocer todas las posibilidades que ofrece RMarkdown (o cualquier otra herramienta), sino solamente aquellas que son necesarias para tus objetivos.

Como siempre, recordá que podés suscribirte a mi blog para no perderte ninguna actualización, y si te quedó alguna consulta no dudes en contactarme.


  1. Spoiler: en un documento RMarkdown se puede incluir código en otros lenguajes, como Python.↩︎

Macarena Quiroga
Macarena Quiroga
Lingüista/Becaria doctoral

Investigo la adquisición del lenguaje. Estudio estadística y ciencia de datos con R/Rstudio. Si te gusta lo que hago, podés invitarme un cafecito desde Argentina, o un kofi desde otros países. Suscribite a mi blog aquí.

Relacionado