3.3 Documentos R Markdown

Nuestra elección para realizar las prácticas y tareas de esta asignatura será utilizar documentos R Markdown. En un documento R Markdown podremos escribir tanto código R como texto. Y al compilarlo obtendremos un documento que incluirá el código, la salida resultante de ejecutar dicho código, y el texto explicativo que hayamos escrito.

  • En el texto podremos utilizar la sintaxis propia del lenguaje de marcado Markdown (independiente de R). Por ejemplo, para escribir texto negrita se escribe ** al comienzo y al final del texto en cuestión:
El resultado anterior permite extraer una conclusión muy **importante**.
  • Y el código de R se incluirá en unos bloques especiales, que en su forma más simple tendrán la estructura
```{r}
<código R>
```

3.3.1 Creación

Para crear tu primer documento R Markdown utiliza el menú

Es probable que la primera vez que crees un documento R Markdown, aparezca una ventana como la de la siguiente imagen, solicitando permiso para instalar varios paquetes requeridos para usar este tipo de documentos.
Instalar paquetes requeridos para R Markdown

Figura 4: Instalar paquetes requeridos para R Markdown

Presiona el botón Yes para que se inicie el proceso de instalación de las dependencias indicadas y espera hasta que se complete la tarea. Tomará foco el panel de nombre Jobs, al lado de la consola y verás una barra indicando el progreso de la instalación.

Aparecerá entonces un cuadro de diálogo de nombre New R Markdown.

Nuevo documento R Markdown

Figura 5: Nuevo documento R Markdown

Rellena ‘Introducción a R y RStudio’ en el campo Title y tu nombre en el campo Author. Para el campo Default output format, conserva la elección ‘HTML’ que aparece por defecto.

Al presionar el botón OK se abrirá una nueva pestaña en el panel de RStudio con el nuevo documento R Markdown.

3.3.2 Guardado

Presiona Ctrl + S para guardarlo, en la carpeta IntroR que creaste antes para la práctica, con el nombre intro-r. Verifica que la etiqueta de la pestaña del documento cambia de Untitled1 a intro-r.Rmd.

3.3.3 Estructura

Las primeras líneas del archivo (1 a 6), delimitadas por tres guiones (---)

---
title: "Introducción a R y RStudio"
author: "Eva"
date: "19/4/2021"
output: html_document
---

conforman la llamada cabecera YAML del documento. Incluye metadatos como el título, el autor y la fecha y el formato de salida del documento que se generará al compilar.

Las líneas siguientes (8 a 10)

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

fijan opciones globales para los bloques de código de todo el documento. Las analizaremos con más detalle en la sección 4.3.

El resto de líneas (12 en adelante), son los contenidos propiamente dichos del documento. Se trata de unos contenidos de muestra, que enseguida reemplazaremos por nuestros contenidos propios. Pero antes de borrar estos contenidos de muestra, compilaremos el documento para ver el resultado inicial.

3.3.4 Compilación

Para compilar el documento presiona el botón Knit en la barra de herramientas de la pestaña del archivo.

Botón **Knit** para compilar un documento R Markdown

Figura 6: Botón Knit para compilar un documento R Markdown

Tomará foco el panel de nombre Render, en la misma ventana que la consola. Al terminar el proceso, el documento compilado aparecerá en el panel Viewer, en la ventana de la zona derecha inferior.

Si al compilar el documento no se abre en el panel Viewer, sino en una ventana emergente, cierra esa ventana y modifica este comportamiento siguiendo los siguientes pasos:

  1. Selecciona el menú
  1. Se abrirá una ventana de nombre Options. Selecciona la sección R Markdown en el menú lateral e indica
como indica la imagen siguiente:
Ajuste para mostrar el documento compilado en el panel del visor

Figura 7: Ajuste para mostrar el documento compilado en el panel del visor

Cierra el diálogo presionando OK y vuelve a compilar.

Si miras los contenidos de la carpeta IntroR (puedes hacerlo desde el panel Files de RStudio) verás que, como resultado de la compilación del archivo fuente intro-r.Rmd, se ha creado el archivo de salida intro-r.html. Éste es el archivo que estamos visualizando en el visor de documentos. También podríamos abrirlo en el navegador web, pudiendolo hacer desde el propio visor, presionando el icono resaltado en la siguiente imagen:

Abrir documento en visor externo

Figura 8: Abrir documento en visor externo

A continuación compararemos el documento fuente intro-r.Rmd con el documento intro-r.html en el visor, para entender cómo se traducen los contenidos que escribimos en un archivo R Markdown en el formato de salida HTML. Nos fíjaremos en particular en los siguientes elementos: encabezados y bloques de código, que se describen en los dos siguientes apartados.

3.3.5 Encabezados

Las líneas 12

## R Markdown 

y 22

## Including Plots

se traducen en la salida como encabezados de secciones. Si inspeccionas el código del archivo intro-r.html verás que se crean elementos de tipo <h2>. En general,

# Título

produce un encabezado de nivel 1,

## Título

un encabezado de nivel 2, y así sucesivamente.

Hay que indicar que es una casualidad la coincidencia del símbolo # para encabezados en el lenguaje Markdown (independiente de R ) y para comentarios en código R.

3.3.6 Bloques de código

Los elementos protagonistas del documento son los bloques de código R (code chunks). En el documento de muestra encontramos dos bloques de código: El primero en las líneas 18-20

```{r cars}
summary(cars)
```

y el segundo en las líneas 26-28

```{r pressure, echo=FALSE}
plot(pressure)
```

Si miras el documento compilado, verás que, para el primer bloque se muestra el código y a continuación la salida o resultado de su ejecución; mientras que para el segundo, se muestra solo la salida, y no el código. Esto es debido a la opción echo=FALSE.

La sintaxis general para incluir un bloque de código R en un documento R Markdown es la siguiente:

```{r [etiqueta], [lista de opciones]}
<código R>
```

Las etiquetas de los dos bloques de código del documento de muestra son cars y pressure. La etiqueta de un bloque de código sirve para identificarlo, podemos interpretarlo como su nombre, pero es opcional y puede omitirse.

El primer bloque de código no tiene ninguna opción. Y el segundo tiene la opción echo=TRUE, que como acabamos de decir inhibe la impresión del código en el documento compilado.

Puesto que la etiqueta y la lista de opciones son opcionales, el esqueleto básico de un bloque de código R incluido en un documento R Markdown es

```{r}
<código R>
```

En el cuerpo del bloque podemos escribir instrucciones de R igual que si estuvieramos escribiendo en un script (incluidos comentarios precedidos por el carácter #).

Notar el cambio de enfoque al escribir en un documento R Markdown respecto a escribir en un script:

  • En un script, se espera que escribamos código R, y para escribir texto ordinario hemos de usar comentarios utilizando el carácter #.

  • Por el contrario, en un documento R Markdown, se espera que escribamos texto (con posibilidad de incluir la sintaxis propia del lenguaje Markdown), y para escribir código R hemos de incluirlo en un bloque especial delimitado por la línea ```{r} al comienzo y la línea ``` al final.

3.3.7 Ejecución de instrucciones individuales

Cuando compilamos un documento R Markdown, se ejecutan todos los bloques de código que contenga, y en el documento compilado podemos visualizar, tanto el código como la salida o resultado (siempre que no hay opciones como echo=FALSE o include=FALSE que inhiban la impresión del código y/o de la salida).

Pero también podemos ejecutar determinadas instrucciones de forma individual, sin necesidad de compilar el documento completo. Para ello, podemos proceder exactamente igual que en el caso de los scripts, es decir:

  • Para ejecutar una sola instrucción, situamos el cursor en cualquiera de las líneas que compongan la instrucción y presionamos Ctrl + Enter.

  • Para ejecutar varias instrucciones, seleccionamos las correspondientes líneas y presionamos Ctrl + Enter.

Además, podemos ejecutar todas las instrucciones que componen un bloque de código utilizando el botón a la derecha del comienzo del bloque que se resalta en la siguiente imagen:

Botón para ejecutar un bloque de código

Figura 9: Botón para ejecutar un bloque de código

La salida se mostrará en la consola, y también incrustada en el propio documento, justo debajo del correspondiente bloque de código. Para esto último ha de estar marcada la opción Show output inline for all R Markdown documents en las opciones para R Markdown en el menú

como muestra la siguiente imagen:
Ajuste para mostrar la salida de un bloque de código *inline*

Figura 10: Ajuste para mostrar la salida de un bloque de código inline