class: title-slide, inverse, bottom background-image: url(https://images.unsplash.com/photo-1595341595379-cf1cb694ea1f?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1484&q=80) background-size: cover # Introducción a RMarkdown ## R-Ladies Puebla ### María Paula Caldas ### 2021-05-08 .right[ Foto de [Karen Penroz](https://unsplash.com/photos/06ZTGDcAQFs) ] --- class: about-me, right, bottom <img style="border-radius: 50%;" src="https://github.com/mpaulacaldas.png" width="150px"/> ## María Paula Caldas <!-- ### Postdoctoral Research Scientist --> <!-- ### University of Pennsylvania, Philadelphia, PA, USA --> [
mpaulacaldas.com](https://mpaulacaldas.com)<br/> [
mapaulacaldas](https://twitter.com/mapaulacaldas)<br/> [
mpaulacaldas](https://github.com/mpaulacaldas)<br/> --- class: left, middle # Antes de comenzar - Slides: <https://mpaulacaldas.github.io/r-ladies-rmarkdown> - Código: <https://github.com/mpaulacaldas/r-ladies-rmarkdown> - RStudio Cloud: <https://rstudio.cloud/project/2531715> # Paquetes - Para este taller necesitaremos el paquete **rmarkdown**. No es necesario cargarlo o instalarlo explícitamente si usas RStudio. - Les mostraré el nuevo [editor visual de R Markdown](https://rstudio.github.io/visual-markdown-editing/?_ga=2.73026771.1763491766.1620455492-1963027167.1619987383#/) que viene en **RStudio v1.4**. No es necesario que tengas esta versión instalada para seguir el taller. --- class: inverse, bottom, left # Introducción ## ¿Qué es R Markdown? --- background-image: url(https://github.com/rstudio/rmarkdown/raw/master/man/figures/logo.png) background-position: 1050px 20px background-size: 100px # ¿Qué es R Markdown? Es un **marco de escritura** para ciencia de datos, que combina: - Texto - Código - Resultados El término R Markdown también puede hacer referencia a: - 📃 Un formato de archivo (`.Rmd`) - 📦 El paquete R [`rmarkdown`](https://pkgs.rstudio.com/rmarkdown/) --- background-image: url(https://bookdown.org/yihui/rmarkdown/images/cover.png) background-position: 800px 250px background-size: 230px # En otras palablas Es una herramienta que nos permite convertir un archivo con texto y código en R en varios tipos de: - Documentos: [HTML](https://bookdown.org/yihui/rmarkdown/html-document.html), [PDF](https://bookdown.org/yihui/rmarkdown/pdf-document.html), [Word](https://bookdown.org/yihui/rmarkdown/word-document.html) - Presentaciones: [PowerPoint](https://bookdown.org/yihui/rmarkdown/powerpoint-presentation.html), [Beamer](https://bookdown.org/yihui/rmarkdown/beamer-presentation.html) Y muchos más... - Documentos con [dashboards o Shiny apps](https://bookdown.org/yihui/rmarkdown/dashboards.html) - Presentaciones [xaringan](https://bookdown.org/yihui/rmarkdown/xaringan.html) - [Sitios web](https://bookdown.org/yihui/rmarkdown/websites.html) - [Libros](https://bookdown.org/yihui/rmarkdown/books.html) .footnote[📖 [R Markdown: The Definite Guide](https://bookdown.org/yihui/rmarkdown/)] --- # ¿Cómo funciona el proceso? .pull-left[ ### Como autoras 1. Creamos un documento `.Rmd` 2. Escribimos texto y código R 3. Especificamos los parámetros de renderizado 4. *Tejemos* el documento, haciendo click en un botón ] .pull-right[ ### Detrás de cámara **rmarkdown** procesa el documento `.Rmd` usando [knitr](https://github.com/yihui/knitr/), y [pandoc](https://pandoc.org/) .center[![](https://es.r4ds.hadley.nz/images/RMarkdownFlow.png)] ] .footnote[🧶 En inglés, *tejer* se escribe *knit*, y se pronuncia *nit*.] --- class: ejercicio # 📝 Ejercicio: El proceso -- ## 1. Demuestro yo - Cómo crear un documento `.Rmd` con RStudio. - Cómo *tejer* el documento. -- ## 2. Experimentamos juntas -- - Usando tu propia instalación de RStudio - Si es la primera vez que utilizas R Markdown, RStudio abrirá una ventana pidiendo permiso para instalar ciertos paquetes. Acepta la instalación. -- - O el proyecto RStudio Cloud: https://rstudio.cloud/project/2531715 --- class: inverse, bottom, left # Los elementos principales: Markdown, R y YAML ### (Texto, código y metadatos) --- # Los parámetros YAML .pull-left[ - Definidos al principio de todo documento `.Rmd`. - Controlan el formato de los documentos de salida (e.g. PDF, Word, HTML). - Y para definir diferentes opciones según cada formato. ] .pull-right[ ```markdown *--- *title: "Analizando los capítulos de R-Ladies en LAC" *author: "María Paula Caldas" *output: * html_document: * toc: true * toc_float: true * github_document: default *--- ## Importar los datos Los datos presentan los diferentes capítulos de las R-Ladies... ``` ] --- class: ejercicio # 📝 Ejercicio: Los parámetros YAML -- ## 1. Demuestro yo - Cómo encuentrar cuales son las opciones de personalización disponibles de `html_document`. - Cómo tejer un RMarkdown a diferentes formatos de salida. -- ## 2. Experimentamos juntas - Crea un nuevo fichero RMarkdown con la ayuda de RStudio. - Escoje el formato `html_document` como formato de salida. - Intenta varios temas diferentes. ¿Cuál fue tu favorito? - Crea una tabla de contenidos flotante. --- # La sintaxis Markdown .panelset[ .panel[.panel-name[Encabezados] .pull-left[ ```md # Primer nivel ## Segundo nivel ### Tercer nivel #### Cuarto nivel #### Quinto nivel ``` ].pull-right[ # Primer nivel ## Segundo nivel ### Tercer nivel #### Cuarto nivel ] ] .panel[.panel-name[Texto] .pull-left[ ```md Otra opción para ~~knitear~~ tejer un documento `.Rmd` es usando la función `render()` del paquete __rmarkdown__. Pero la mayoría de las veces, es más fácil con el botton de _Knit_ de RStudio. ``` ].pull-right[ Otra opción para ~~knitear~~ tejer un documento `.Rmd` es usando la función `render()` del paquete __rmarkdown__. Pero la mayoría de las veces, es más fácil con el botton de _Knit_ de RStudio. ] <br/> > 🙋 ¿Qué otra forma hay para escribir el texto en cursiva o negrita? ] .panel[.panel-name[Listas] .pull-left[ ```md - Un elemento en lista no enumerada - Otro elemento - Un subelemento - Otro subelemento 1. Elemento 1 en lista enumerada 1. Elemento 2 2. Elemento 3 ``` ].pull-right[ - Un elemento en lista no enumerada - Otro elemento - Un subelemento - Otro subelemento 1. Elemento 1 en lista enumerada 1. Elemento 2 2. Elemento 3 ] <br/> > 💡 En las listas enumeradas, no es necesario seguir el conteo. ] .panel[.panel-name[Imagenes] .pull-left[ ```md ![Sticker rmarkdown](https://github.com/rstudio/rmarkdown/raw/master/man/figures/logo.png) ``` ].pull-right[ .center[ ![Sticker rmarkdown](https://github.com/rstudio/rmarkdown/raw/master/man/figures/logo.png) ] ] > 🙋 ¿Para qué sirve el texto entre los corchetes? ] .panel[.panel-name[Vínculos] .pull-left[ ```md [Guía de R Markdown](https://github.com/rstudio/cheatsheets/raw/master/translations/spanish/rmarkdown-2.0_Spanish.pdf) ``` ].pull-right[ [Guía de R Markdown](https://github.com/rstudio/cheatsheets/raw/master/translations/spanish/rmarkdown-2.0_Spanish.pdf) ] <br/> > 🙋 Abre la guía. ¿En qué lugar de la guía encontramos información sobre el sintaxis Markdown? ] ] --- class: ejercicio # 📝 Ejercicio: La sintaxis Markdown 1. Crea un nuevo archivo `.Rmd` con ayuda de RStudio. 1. Usando la [Guía de R Markdown](https://github.com/rstudio/cheatsheets/raw/master/translations/spanish/rmarkdown-2.0_Spanish.pdf), agrega los siguientes elementos a tu documento: - Una nota al pie de página. - Un tablero. - Una cita en bloque. 1. Si tienes una versión reciente de RStudio (>1.4). ¿Cómo harías para hacer estas tareas con el editor visual? Puedes usar `rstudioapi::getVersion()` para verificar tu versión. --- # Código R dentro de línea .pull-left[ ```markdown ## Reserven la fecha `r emo::ji("tada")` Queridos amigos, Faltan `r as.Date("2022-03-04") - Sys.Date()` días para mi próximo cumpleaños, y me gustaría asegurarme que podré celebrarlo con ustedes. ``` ] -- .pull-right[ ## Reserven la fecha 🎉 Queridos amigos, Faltan 300 días para mi próximo cumpleaños, y me gustaría asegurarme que podré celebrarlo con ustedes. ] --- # Código R en bloques .panelset[ .panel[.panel-name[Resultados] .pull-left[ ```` ```{r} capitulos_lac <- read.csv("https://raw.githubusercontent.com/mpaulacaldas/r-ladies-rmarkdown/master/capitulos_lac.csv") nrow(capitulos_lac) ``` ```` ] .pull-right[ ```r capitulos_lac <- read.csv("https://raw.githubusercontent.com/mpaulacaldas/r-ladies-rmarkdown/master/capitulos_lac.csv") nrow(capitulos_lac) ``` ``` ## [1] 34 ``` ] ] .panel[.panel-name[Figuras] .pull-left[ ```` ```{r} library(ggplot2) ggplot(capitulos_lac) + geom_bar(aes(pais)) ``` ```` ] .pull-right[ ```r library(ggplot2) ggplot(capitulos_lac) + geom_bar(aes(pais)) ``` <img src="index_files/figure-html/lacbars-1.png" width="504" /> ] ] .panel[.panel-name[Tableros] .pull-left[ ```` ```{r} library(dplyr) capitulos_lac %>% count(pais, sort = TRUE) %>% knitr::kable() ``` ```` ] .pull-right[ ```r library(dplyr) capitulos_lac %>% count(pais, sort = TRUE) %>% head() %>% knitr::kable() ``` |pais | n| |:---------|--:| |Brasil | 12| |Argentina | 9| |Chile | 3| |México | 3| |Ecuador | 2| |Bolivia | 1| ] ] ] --- # Opciones de bloques Las opciones de bloque controlan si el bloque de código es ejecutado, impreso, y si sus resultados serán insertados en el documento final. .pull-left[ ```` *```{r, eval = FALSE} library(ggplot2) ggplot(capitulos_lac) + geom_bar(aes(pais)) ``` ```` ] .pull-right[ - Están dentro de las llaves <br>`{r opcion=valor}` - Con opciones separadas por comas<br>`{r opcion1=valor, opcion2=valor}` ] .footnote[ .small[ 📖 [Capítulo 27, R para Ciencia de Datos](https://es.r4ds.hadley.nz/r-markdown.html#opciones-de-los-bloques) ] ] --- # Recetas frecuentes .panelset[ .panel[.panel-name[eval] `eval = FALSE` muestra el código, pero no lo ejecuta. .pull-left[ ```` *```{r, eval = FALSE} capitulos_lac <- read.csv("https://raw.githubusercontent.com/mpaulacaldas/r-ladies-rmarkdown/master/capitulos_lac.csv") nrow(capitulos_lac) ``` ```` ] .pull-right[ ```r library(dplyr) capitulos_lac <- read.csv("https://raw.githubusercontent.com/mpaulacaldas/r-ladies-rmarkdown/master/capitulos_lac.csv") nrow(capitulos_lac) ``` ] ] .panel[.panel-name[echo] `echo = FALSE` esconde el código del bloque, pero lo ejecuta e imprime sus resultados. .pull-left[ ```` *```{r, echo = FALSE} capitulos_lac <- read.csv("https://raw.githubusercontent.com/mpaulacaldas/r-ladies-rmarkdown/master/capitulos_lac.csv") nrow(capitulos_lac) ``` ```` ] .pull-right[ ``` ## [1] 34 ``` ] ] .panel[.panel-name[include] `include = FALSE` ejecuta el código del bloque, pero no muestra el código ni imprime los resultados en el documento. Los objetos creados en el bloque quedan disponibles para ser usados después en el documento. .pull-left[ ```` *```{r, include = FALSE} capitulos_lac <- read.csv("https://raw.githubusercontent.com/mpaulacaldas/r-ladies-rmarkdown/master/capitulos_lac.csv") nrow(capitulos_lac) ``` Hay `r nrow(capitulos_lac)` de R-Ladies en Latinoamérica y el Caribe. ```` ] .pull-right[ Hay 34 en Latinoamérica y el Caribe. ] ] ] --- class: ejercicio # 📝 Ejercicio: El código R ## 1. Demuestro yo - Cómo crear un bloque de código usando los atajos de teclado. - Cambiar las opciones de bloque usando RStudio. --- class: ejercicio # 📝 Ejercicio: El código R ## 2. Experimentemos juntas Tratemos de crear desde cero un reporte sobre los capítulos des las R-Ladies en Latinoamérica y el Caribe, con los siguientes elementos: - Un gráfico. - Código escondido. Para leer los datos: ```r capitulos_lac <- read.csv("https://raw.githubusercontent.com/mpaulacaldas/r-ladies-rmarkdown/master/capitulos_lac.csv") ``` --- class: inverse, bottom, left # Ir más lejos --- ## Ir más lejos Esta presentación fue inspirada en los materiales de [Alison Hill](https://alison.rbind.io/), en particular: - [R Markdown Anatomy](https://rmd4pharma.netlify.app/static/slides/01-rmd-anatomy.html#1) - [An Introduction to R Markdown](https://apreshill.github.io/rmd4cdc/#1) Los siguientes libros son una excelente fuente de referencia: - [R para Ciencia de Datos](https://es.r4ds.hadley.nz/introducci%C3%B3n-18.html) (traducido al español) - [R Markdown: The Definitive Guide](https://bookdown.org/yihui/rmarkdown/) - [R Markdown Cookbook](https://bookdown.org/yihui/rmarkdown-cookbook/) --- class: inverse, middle, left background-image: url(https://images.unsplash.com/photo-1595341595379-cf1cb694ea1f?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1484&q=80) background-size: cover # ¡Muchas gracias! # ¿Preguntas?