En este artículo aprenderemos a exportar reportes en R en diferentes formatos como HTML, Word y pdf.

En esta sesión explicaré como exportar reportes en R en formato
.html, .docx, y .pdf.
Para ello necesitaremos tener instalados y desplegados los siguientes paquetes:
pacman::p_load(
#manipulación de data
tidyverse,
#importar exportar data
haven, rio,
#tablas
flextable, gtsummary,
#etiquetas
sjlabelled,
#exportar reportes
officer, officedown
)
Realizar reportes en R nos puede ser de utilidad para cuando
queremos, por ejemplo, presentar múltiples gráficos y tablas. Resultaría
un poco tedioso exportar cada gráfico realizado en R en formato
.png y luego insertarlo en un documento de Word para luego
presentarlo.
Asimismo, realizar reportes en R permite una mayor reproducibilidad del proceso realizado, lo cual puede ser revisado por otros colegas.
Dicho esto, empezemos por comprender el proceso de construcción de un
reporte. Todo reporte se deriva de un archivo RMarkdown. Como su nombre
lo dice, estos documentos se caracterizan por combinar lenguaje
R con md (markdown). Markdown es un lenguaje de marcado
ligero que nos permite realizar cuestiones de formato como
negritas, cursiva,
cursivaynegrita, con una mayor
reproducibilidad y legibilidad. Knit es el paquete que nos
permite convertir un archivo .Rmd a diferentes outputs de
la siguiente manera:

Un aspecto característico de los RMarkdown, es el encabezado que
tiene (YAML header). Es en este espacio en que se define el
tipo de output que tendrá el archivo .Rmd. Por default
suele ser un output HTML por lo que comenzaremos con este.
Cuando creamos un documento .Rmd desde
File < New File < R Markdown nos aparece la siguiente
pestaña:

Y si le damos “OK” nos creará un YAML header con los aspectos básicos necesarios para generar un HTML output:
---
title: "Untitled"
author: "Santiago Sotelo"
date: "`r Sys.Date()`"
output: html_document
---En este ejemplo, el output está programado para ser un HTML, es
decir, que se verá como una página continúa sin cortes (no paginado).
Ahora bien, es importante tomar en cuenta cuál será nuestro output al
momento de elaborar nuestros gráficos y tablas. Por ejemplo, si mi
objetivo es generar un reporte en HTML entonces me apoyaré en paquetes
como {gtsummary} o {DT}para generar tablas
HTML. Es así como este documento “Exportar reportes en R” se encuentra
exportado en HTML por lo que renderiza adecuadamente tablas como
esta:
trial %>%
tbl_summary(include=grade)
| Characteristic | N = 2001 |
|---|---|
| Grade | |
| I | 68 (34%) |
| II | 68 (34%) |
| III | 64 (32%) |
| 1 n (%) | |
Sin embargo, este tipo de tablas no es adecuado para reportes en Word
o pdf. Por último, si queremos exportar nuestro .Rmd a
.html clickeamos el botón “Knit” que se encuentra en la
parte superior de RStudio y esperamos a que aparezca nuestro documento
HTML.

Si regresamos al panel para generar reportes en .Rmd
(File < New File < R Markdown) veremos que también
nos brinda la posibilidad de elegir un output en PDF:

Un aspecto positivo del output PDF es, más allá de ser paginado, es
decir se puede dividir en páginas numeradas óptimo para un trabajo
impreso, es que nos permite sacar provecho de los comandos
LaTeX que es un sistema de composición de textos muy
familiar para las personas que trabajan en Overleaf.
LaTeX es un universo en sí mismo por lo que cualquier
interesado puede indagar mayor información en la siguiente página. En esta
ocasión, utilizaremos los siguientes comandos de LaTeX:
\newpage : insertar un salto de página
\@ref(fig:_) : referenciar una figura como un
gráfico
\@ref(tab:_) : referenciar una tabla
Si le damos “OK” a la creación del RMarkdown nos creará un YAML header con los aspectos básicos necesarios para generar un HTML output:
---
title: "Untitled"
author: "Santiago Sotelo"
date: "`r Sys.Date()`"
output: pdf_document
---Los comandos de LaTeX nos permiten aprovechar la
utilidad de los documentos paginados y la referenciación. Por ejemplo,
\newpage nos permite insertar un salto de página entre dos
textos y se utiliza de la siguiente manera:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras molestie tortor ut tellus dapibus, id viverra purus blandit. Nulla consequat magna at fermentum congue. Sed lobortis turpis nec est tristique, id auctor justo finibus. Mauris tristique facilisis sem, scelerisque dapibus metus tincidunt sit amet.
\newpage
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras molestie tortor ut tellus dapibus, id viverra purus blandit. Nulla consequat magna at fermentum congue. Sed lobortis turpis nec est tristique, id auctor justo finibus. Mauris tristique facilisis sem, scelerisque dapibus metus tincidunt sit amet.
Si bien R cuenta con su propio formato output .docx, que
se denomina word_document, el paquete
{officedown} nos permite tener mayor versatilidad en la
edición del documento de Word desde R:
Setup básico:
---
title: "Untitled"
author: "Santiago Sotelo"
date: "`r Sys.Date()`"
output:
officedown::rdocx_document
---El setup mínimo de un output Word con {officedown}
precisa el tipo de documento rdocx_document. En cambio, si
se quiere tener mayor control sobre un documento plantilla, el estilo de
las tablas, de los gráficos, el tamaño de la hoja y los márgenes se
puede utilizar este setup avanzado:
Setup avanzado de Word:
---
title: "Untitled"
author: "Santiago Sotelo"
date: "`r Sys.Date()`"
output:
officedown::rdocx_document:
reference_docx: "Documento/documento_plantilla.docx"
tables:
style: Table
layout: autofit
width: 1.0
align: center
topcaption: true
caption:
style: Table Caption
pre: "Tabla "
sep: ": "
tnd: 0
tns: '-'
fp_text: !expr officer::fp_text_lite(bold = TRUE)
plots:
style: Normal
align: center
topcaption: true
caption:
style: Image Caption
pre: "Gráfico "
sep: ": "
tnd: 0
tns: '-'
fp_text: !expr officer::fp_text_lite(bold = TRUE)
page_size:
width: 8.3
height: 11.7
orient: "portrait"
---Ahora bien, si queremos utilizar la referenciación en nuestro
documento podemos realizar los siguientes comandos de
LaTeX: \@ref(fig:_) y
\@ref(tab:_). Estos comandos nos permiten referenciar con
un número los gráficos y tablas que desplegamos.
Por ejemplo, si utilizamos la base economics del paquete
{ggplot2}:
ggplot(economics, aes(date, unemploy / pop)) +
geom_line() +
theme_minimal()
Figure 1: economics plot
Esta es una referencia a la gráfico 1 <-
\@ref(fig:tsplot).
| date | pce | pop | psavert | uempmed | unemploy |
|---|---|---|---|---|---|
| 1967-07-01 | 506.7 | 198712 | 12.6 | 4.5 | 2944 |
| 1967-08-01 | 509.8 | 198911 | 12.6 | 4.7 | 2945 |
| 1967-09-01 | 515.6 | 199113 | 11.9 | 4.6 | 2958 |
| 1967-10-01 | 512.2 | 199311 | 12.9 | 4.9 | 3143 |
| 1967-11-01 | 517.4 | 199498 | 12.8 | 4.7 | 3066 |
| 1967-12-01 | 525.1 | 199657 | 11.8 | 4.8 | 3018 |
Esta es una referencia a la tabla 1 <-
\@ref(tab:mytab).
Más recursos para aprender: