class: front <!--- Para correr en ATOM - open terminal, abrir R (simplemente, R y enter) - rmarkdown::render('static/docpres/07_interacciones/7interacciones.Rmd', 'xaringan::moon_reader') About macros.js: permite escalar las imágenes como [scale 50%](path to image), hay si que grabar ese archivo js en el directorio. ---> .pull-left[ # Encuestas Sociales ## Juan Carlos Castillo ## Sociología FACSO - UChile ## 2do Sem 2022 ## [.green[encuestas-sociales.netlify.com]](https://encuestas-sociales.netlify.com) ] .pull-right[ .right[ ## .yellow[Sesión 9: Texto simple y Rmarkdown]  ] ] --- layout: true class: animated, fadeIn --- class: middle, center  --- ## Elementos para la .red[reproducibilidad] - Carpeta de proyecto autocontenida y transferible -- - Escritura abierta: - texto simple/plano, libre de software comercial - citas - documentos dinámicos -- - Flujo de trabajo documentado y reproducible -- - Repositorio con datos y código de análisis abierto -- - Control de versiones --- class: roja, right, bottom,slideInRight # Contenidos ## 1. Fundamentos escritura simple ## 2. Markdown ## 3. Documentos dinámicos y RMarkdown --- class: roja, right, bottom # Contenidos ## 1. .yellow[Fundamentos escritura simple] ## 2. Markdown ## 3. Documentos dinámicos y RMarkdown --- ## Flujo de trabajo con procesador de texto tradicional .center[  ] --- # Abriendo el archivo de escritura tradicional  --- # Desventajas del procesador tradicional .pull-left-wide[ - Barrera de **pago/licencia** para acceder a contenidos (propiedad) - Difícil **versionamiento** y llevar registro de quién hizo qué cambio, barrera a la reproducibilidad y colaboración - No permite un documento enteramente **reproducible** que combine texto y código de análisis (en caso de utilizarlo) ] .pull-right-narrow[ <br> <br>  ] --- # Escritura libre y abierta - independiente de programa comercial - independiente de plataformas específicas - permite combinar texto y análisis en un mismo documento - foco en los contenidos en lugar del formato - permite distintas opciones de formato final --- # Inspiración .center[ ] --- class: middle  --- class: roja, right, bottom,slideInRight # Contenidos ## 1. Fundamentos escritura simple ## 2. .yellow[Markdown] ## 3. Documentos dinámicos y RMarkdown --- # Funcionamiento de escritura simple / plana - entorno: editor de texto - separación entre texto de entrada (input) y texto de salida (output) - foco en el input/contenido vs output/formato - marcas de edición: vínculo entre formato de input y output --- # Marcas de edición - Vínculo entre escritura en texto simple (input) y output  --- # Principales Alternativas escritura simple .left-column[ # **Latex** # .grey[Markdown] ] .right-column[ - sistema de escritura simple de amplio uso en la academia - alta calidad en salida a pdf - creado a comienzos de los 80 (Donald Knuth, Leslie Lamport) ] --- # Principales Alternativas escritura simple .left-column[ # **Latex** # .grey[Markdown] ] .right-column[  ] --- # Principales Alternativas escritura simple .left-column[ # .grey[Latex] # **Markdown** ] .right-column[ .medium[ - creado por John Gruber y Aaron Swartz en 2004 - forma de escritura simple con pocas marcas de formato - conversión a distintos formatos de salida (html, pdf) - Soporta encabezados, tablas, imágenes, tablas de contenidos, ecuaciones, links ... - filosofía: foco en contenido primero, el formato después. ] ] --- # Principales Alternativas escritura simple .left-column[ # .grey[Latex] # **Markdown** ] .right-column[  ] --- # Principales Alternativas escritura simple <br> | | **Control de formato** | **Marcas de edición** | **Formatos de salida** | |---------- |:--------------------:|:----------------:|:--------------------:| | LaTeX | + | + | - | | Markdown | - | - | + | --- # Markdown, pandoc y renderización  --- # Ejemplos de marcas de edición en Markdown - Texto en **negrita** entre dos astericos: `**negrita**` - Texto en *cursiva* con un asterico por lado: ` *cursiva*` - Títulos se marcan con `#` al principio, subtítulos `##` , y así sucesivamente - Imágenes: `` - Links: `[Texto clickeable](link)` --- class: roja, right, bottom,slideInRight # Contenidos ## 1. Fundamentos escritura simple ## 2. Markdown ## 3. .yellow[Documentos dinámicos y RMarkdown] --- # Problemas de reproducibilidad en documentos de investigación .pull-left[ - Proceso tradicional: cortar y pegar resultados en el documento de texto - Dificulta la **reproducibilidad**: ¿de dónde salieron esos resultados? ] .pull-right[ .center[  ] ] --- # Desafiando el modelo cortar & pegar - **Ideal de reproducibilidad**: documento donde se combine texto y código que genera resultados presentados. - **Limitación procesadores de texto**: no permiten incorporar código & resultados de manera eficiente - **Limitación software de análisis**: permiten incorporar texto solo en un formato plano, no publicable --- # Alternativa en entorno R: Knitr (Tejer) .pull-left-narrow[  ] .pull-right-wide[ - Librería R que genera documentos dinámicos, combinando (tejiendo) texto y código en una misma hoja - Diferentes opciones de formato de salida (html, pdf, word) - Basada en una versión de Markdown llamada RMarkdown ] --- # Funcionamiento 1. Artículo `RMarkdown` (.Rmd) combina texto plano Markdown y código de análisis `R` 2. `Knitr` (_cniter_ o _kaniter_) genera un archivo Markdown (.md) a partir del Rmd 3. El archivo Markdown puede ser transformado por `pandoc` a diferentes formatos de salida publicable .small[Nota: `pandoc` se instala automáticamente con RStudio, no requiere instalación aparte] --- # RMarkdown: Acepciones .pull-left-narrow[  ] .pull-right-wide[ - Lenguaje que combina código (R) y texto (Markdown) - Hoja de código escrita en RMarkdown (documento RMarkdown) - Librería de R que provee de una serie de herramientas para generar documentos dinámicos y publicarlos ] --- # Librería RMarkdown - Instalar la librería (o actualizarla, si está cargada) : `install.packages("rmarkdown")` - Al instalarla, también incorpora otras librerías (dependencies) que permiten trabajar y publicar con **RMarkdown** (como `knitr` y también `tinitex`, que permite generación documentos pdf vía Latex). --- # Iniciar documento RMarkdown en RStudio - RStudio ha ido progresivamente incorporando adaptaciones a la escritura en RMarkdown - Para generar documento RMarkdown: File > New File > R Markdown - Luego pide unas opciones para generar un documento ejemplo (posteriormente se puede borrar el contenido). --- # Iniciar documento RMarkdown en RStudio .center[  ] --- # Iniciar documento RMarkdown en RStudio .pull-left[ <br>  ] .pull-right[ .medium[ - El documento ejemplo tiene un breve encabezado YAML (Yet Another Markdown Language), donde se especifican opciones generales del documento entre tres guiones (`---`) - También por defecto genera un chunk inicial de opciones (setup) para todo el documento (opcional) ] ] --- # Escritura en RMarkdown - permite incluir **trozos de código (chunks)** en el texto - un chunk se especifica mediante una línea de código inicial ` ```{r}`, y se cierra con ` ``` ` `Aquí texto ` ```` ```{r} 1 + 1 ``` ```` `Aquí sigue el texto` --- # Insertar chunks Se pueden insertar rápidamente de la siguiente manera: - Menú en ventana de RStudio *Insert* > R  - o, combinación Ctrl + Alt + i --- class: inverse, middle, right # Opciones de chunks --- # Opciones (principales) de chunks 1. Mostrar código y resultado 2. Mostrar solo el código 3. Mostrar solo el resultado 4. No mostrar ni código ni resultado 5. Mostrar código sin ejecutarlo 6. Entregar resultado en formato directo (ej: html o latex) --- # Especificación de opciones - las opciones se anotan dentro de la llave inicial posterior a la letra r: `{r [opciones]}` - las opciones principales son: - mostrar código `{r echo=TRUE/FALSE}` - mostrar resultado `{r results='markup'/'hide'}` - estas opciones se visualizan al momento de procesar el documento en algún formato de salida. A este procesamiento se le denomina **renderizar** (del ingles _render_ ... no hay buena traducción) --- # 1. Mostrar código y resultado (opción por defecto) ```` ```{r} 1 + 1 ``` ```` (equivale a `{r echo=TRUE results='markup'}`) Renderiza ``` ## [1] 2 ``` --- # 2. Solo código, ocultando resultados: ```` ```{r, results='hide'} 1 + 1 ``` ```` Renderiza: --- # 3. Solo resultado ```` ```{r, echo=FALSE} 1 + 1 ``` ```` Renderiza: ``` ## [1] 2 ``` --- # 4. Ni código ni resultado ```` ```{r echo=FALSE results='hide'} 1 + 1 ``` ```` No renderiza Se usa cuando se ejecuta un comando necesario pero que no se requiere/necesita dejar visible en el documento de salida (Ej: cargar base de datos) --- # 5. Código sin ejecutar ```` ```{r, eval=FALSE} 1 + 1 ``` ```` Se puede usar para dar un ejemplo de código que no requiere ser ejecutado --- # 6. Resultado en formato directo de salida ```` ```{r, results='asis'} stargazer(datos1, type="html") ``` ```` - se utiliza principalmente para comandos de generación de tablas, que arrojan un código que luego puede ser interpretado por otro lenguaje (por ejemplo, html o LaTeX) --- class: roja bottom right # Knitr --- .pull-left-wide[ ## Generando documento con Knitr - Knitr es una librería de R, se instala automáticamente al instalar `rmarkdown` - El documento se genera al presionar el botón `Knitr` (que activa función de la librería) - También al desplegar el menú se pueden elegir opciones de formato ] .pull-right-narrow[ .right[ <br> <br> <br>  ] ] --- # Sobre formatos de salida - La conversión más simple y rápida es a html. - El resultado aparece en el visor (Viewer) de R, o se puede seleccionar otra opción de visualización desde la rueda de configuración al lado del botón `knitr` - El documento queda grabado como archivo (ej: probando.html) en el mismo directorio del archivo .Rmd --- ## Sobre formatos de salida: En Visor de RStudio  --- class: inverse ## .orange[Resumen] - Cortar y pegar dificulta la reproducibilidad -- - Documentos dinámicos combinan texto y código de análisis, permitiendo mayor reproducibilidad -- - En R la generación de documentos dinámicos opera mediante la librería `knitr`, que convierte documentos RMarkdown a Markdown --- class: inverse ## Resumen - Documentos dinámicos: - "tejiendo" texto y código de análisis en texto plano - reproducibilidad - Documentos dinámicos en R / RStudio - knitr - RMarkdown - chunks y opciones --- class: front .pull-left[ # Encuestas Sociales ## Juan Carlos Castillo ## Sociología FACSO - UChile ## 2do Sem 2022 ## [.green[encuestas-sociales.netlify.com]](https://encuestas-sociales.netlify.com) ] .pull-right[ .right[ <br>  ] ]