10B - Reportes en R Markdown

Inicio

Comencemos cargando el tidyverse y nuestros datos:

library(tidyverse)
datos_midwest <- read_csv("datos/midwest.csv")
## Parsed with column specification:
## cols(
##   .default = col_double(),
##   county = col_character(),
##   state = col_character(),
##   category = col_character()
## )
## See spec(...) for full column specifications.

Generación de tablas desde data frames

Como hemos visto, podemos generar tablas “a mano” con R Markdown:

Nombre Descripción
Juan Un estudiante
Ana Una estudiante

Supongamos que tenemos un data frame, como el siguiente, y queremos insertarlo como tabla en nuestro reporte.

conteo_estados <- datos_midwest %>% 
  count(state)

Podemos insertarlo como tabla HTML gracias al paquete kableExtra:

# install.packages("kableExtra")
library(kableExtra)
kable(conteo_estados)
state n
IL 102
IN 92
MI 83
OH 88
WI 72

Ojo con la opción del chunk (results="asis"): estamos dándole HTML directo a R Markdown, por lo que debemos decirlo explícitamente.

Como siempre en los paquetes de R, hay muchas opciones en kableExtra. Aquí está la guía de HTML, de las viñetas del paquete. Aquí con unas opciones simples, que hacen que la tabla se vea mejor:

kable(conteo_estados) %>% 
  kable_styling(bootstrap_options = c("striped", "hover"),
                full_width = F)
state n
IL 102
IN 92
MI 83
OH 88
WI 72

Imágenes y gráficos

Imágenes

Hemos visto la siguiente forma, muy simple, para insertar imágenes:

A menudo queremos personalizar cómo se muestran las imágenes, lo que podemos conseguir con las opciones del chunk. En este caso, bajamos a un 50% el tamaño de la imágenes y la alineamos en el centro. Por cierto, ¿qué está haciendo la opción echo=F aquí?

Gráficos

Las mismas opciones de chunk funcionan con gráficos!

ggplot(datos_midwest, aes(x = log(popdensity), y = percbelowpoverty)) +
  geom_point()

ggplot(datos_midwest, aes(x = log(popdensity), y = percbelowpoverty)) +
  geom_point()

Ecuaciones

Podemos hacer ecuaciones en R Markdown usando la sintaxis de \(\LaTeX\). Es bastante difícil de leer, pero muy completa (podemos hacer de todo). Un buen torpedo es DIMACS (s.f.).

\[ x^n + y^n = z^n \]

Tipos de documento generados por R Markdown

R Markdown puede compilarse a HTML o PDF (\(\LaTeX\)). Esto permite generar múltiples tipos de documento.

A continuación veremos algunas características básicas de algunos tipos de documento. Algunos consejos aplican solo para computadores personales (como instalar \(\LaTeX\) o paquetes), y los documentos van a funcionar de inmediato en esta sesión de RStudio Cloud.

Reportes en HTML

  • Este es el formato que hemos estado utilizando.

  • Una de las gracias del HTML es que es interactivo, permite GIFs, videos, etc, que no podríamos poner en PDF.

  • Hay muchas plantillas. Por ejemplo, las de prettydoc.

Diapositivas en HTML (paquete revealjs)

  • Hay un ejemplo en los archivos 11c_diapos_html....

  • Una vez que tengamos instalado el paquete revealjs, podemos crear una nueva presentación con “File > New File > R Markdown > From Template > Reveal.js Presentation (HTML)”.

  • Esta guía contiene las opciones.

Reportes en PDF

  • Hay un ejemplo en los archivos 11d_reporte_pdf....

  • Podemos crear un nuevo reporte con “File > New File > R Markdown > PDF”.

  • Para que funcionen, debemos tener \(\LaTeX\) en nuestro computador (aquí en RStudio Cloud ya viene). La forma más fácil instalarlo localmente es con el paquete de R tinytex.

  • Algunas cosas en nuestro código podrían tener que cambiar. Por ejemplo, kableExtra va a funcionar un poco distinto; aquí está la guía de kableExtra para reportes en PDF.

Diapositivas en PDF (paquete beamer)

  • Hay un ejemplo en los archivos 04_diapos_pdf....

  • No debemos instalar el paquete beamer antes, RStudio lo instalará por nosotros si no lo tenemos.

  • Podemos crear diapositivas en pdf con “File > New File > R Markdown > Presentation > PDF (Beamer)”.

  • Para que funcionen, debemos tener \(\LaTeX\) en nuestro computador (aquí en RStudio Cloud ya viene). La forma más fácil instalarlo localmente es con el paquete de R tinytex.

  • Aquí hay una guía para presentaciones con beamer.

Plantillas para otros tipos de documento con el paquete pagedown

  • Creo que vale la pena mirar la página de dicho paquete. Tiene excelentes plantillas para hacer CVs, pósters, cartas, etc.
  • El paquete no funciona en RStudio Cloud, por ahora.