Documentos interactivos

En este artículo explicaremos como crear una aplicación Shiny utilizando un documento RMarkdown.

Iniciaremos repasando en qué consiste un documento RMarkdown y como RStudio permite generar páginas web a partir de estos documentos.

Un documento RMarkdown tiene la propiedad de combinar texto, codigos y gráfico con la intención de generar artículos científicos de alta calidad, que pueden verse en formatos como pdf, doc o HTML. Algo que los hace muy útiles y llamativos es que dentro de ellos podemos tener la ejecución de codigos y con ello ver de una manera directa resultados estadísticos que nos ayudan a sacar conclusiones.

Estos documentos están basado en el lenguaje Markdown (Creado por John Gruber), de allí su nombre (RMarkdown), este lenguaje fue diseñado para facilitar la aplicación de formato a un texto marcado utilizando caracteres especiales para generar texto de una manera mucho más sencilla, y que puedan ser colocados en una página web. Un documento Markdown convierte el texto marcado en documentos XHTML utlizando html2text (Creado por Aaron Swartz, por esto se le atribuye la creación tanto a John Gruber como a Aaron Swartz).

La forma que RStudio utilizo para adaptar documentos Markdown a formatos especifico (pdf, HTML, Doc) fue utilizando el convertidor Pandoc (creado por John MacFarlane).

Para que pueda ocurrir la magia, de pasar del texto marcado al documento final, RStudio utiliza el paquete knitr, este paquete hace la codificación del texto marcado, recordemos que puede tener códigos, interpretando los carácteres para generar el documento final con los resultados esperados.

Las aplicaciones Shiny, son páginas web interactivas que utilizan el sofware estadístico R, para mostrar resultados dinámicos. Utilizaremos un documento RMarkdown explicando los elementos que debe contener para la generación de cualquier aplicación web.

Lo primero que tenemos que hacer es abrir RStudio y crear un archivo RMarkdown

Nos aparecera una ventana donde debemos seleccionar en la columna izquierda Shiny y en la columna de la derecha colocar el título de nuestro documento, autor y seleccionar Shiny Document y finalmente presionar ok.

Nos aparecerá un documento en formato .Rmd (documento RMarkdown) que en la cabecera tendrá el título que colocamos title: "Aplicación Shiny" , el autor autor: "Synergy Vision", la forma como se correrá el documento runtime: shiny y el tipo de documento que se generará output: html_document.

Las aplicaciones Shiny se forman creando los Inputs y Outputs, recordemos que esto lo haciamos de dos maneras, una era crear un documento, al que llamabamos ui.R para especificar la interfaz ui (donde van las instrucciones que aparecerán en la página y el diseño de la misma) y otro para el servidor serve, al que llamabamos serve.R (donde aparecen las funciones que realizan los cálculos que se mostrarán en la página “Outputs” y estos dependen de las entradas que se tengan “Inputs”) o creando un único documento, que llamabamos app.R donde se le especifica que corresponde a la interfaz ui y al servidor serve.

Un documento RMarkdown tiene la característica de tener texto y dentro de estos tener aplicaciones interactivas, hay dos formas de generarlos:

Una es colocar los comandos que corresponden ui y al servidor serve seguidos en una sola parte del documento.

La otra forma es separar los comandos que corresponden a la interfaz ui de los comandos del servidor serve.

Como estos son comandos que se ejecutan en el programa R se deben colocar dentro de Chunks, para el último caso se colocarían los comandos de la cada parte en Chunks diferentes y para el primer caso en un solo Chunks.

Recordemos que los codigos en un documento RMarkdown se deben colocar de la siguiente manera:

  • Inline Code : Si se quiere que el codigo aparezca entre las líneas del documento.
`r < Aquí se debe colocar el codigo respectivo >`
  • Code Chunks : Si queremos agregar una o más líneas de codigo.
```{r}
  Aquí se deben colocar los códigos respectivos 
```

Es importante destacar que dentro del Chunk podemos indicar características como que en el resultado final, en este caso el documento HTML, no se muestren los códigos que usamos (echo= FALSE), el lenguaje que se usará para correr los códigos (engine = r), si se quiere correr el código que se coloca (eval= TRUE) o (eval= FALSE) si sólo queremos que en el resultado final aparezcan los códigos y no la implementación de los mismos, entre otras.

Con esto claro lo que tenemos que hacer es crear Chunks, donde colocaremos los comandos correspondientes a los elementos de la interfaz ui y del servidor serve.

A continuación podemos ver el contenido de un documento RMarkdown donde se explica que es un histograma y luego una aplicación Shiny que tendrá una slider donde se selecciona la cantidad de datos de una población que se distribuye Normal estándar, y luego muestra el histograma correspondiente a estos datos con su función de densidad.

---
title: "Aplicación Shiny"
autor: "Synergy Vision"
runtime: shiny
output: html_document
---

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

## Histogramas

Un Histograma consiste en un conjunto de rectángulos, cuyo ancho es proporcional al rango de los valores que se encuentran en una clase y la altura es proporcional al número de elementos que pertenecen a la clase, ésta representa el número de observaciones. 

Los histogramas con las frecuencias relativas tienen la misma forma y escala horizontal que el histograma, pero en la escala vertical se gráfica la frecuencia relativa de cada clase.

```{r eruptions, echo=FALSE}
titlePanel("Aplicación Shiny dentro del documento")

sliderInput("n", label = "Cantidad de datos:", min = 10, max = 300, value = 50)

renderPlot({
  x<-rnorm(input$n)
  y<-dnorm(x)
  
  dat<-data.frame(x,y)

  ggplot(dat,aes(x))+
    geom_histogram( aes(y=..density..),closed="left",bins = 8,fill="blue",col="black",
                    alpha=0.4)+
    geom_line(aes(x,y),colour="black", size=1)+
    labs(title = "Histograma", x="x", y="Frecuencia" )
})
```

Este artículo se inspiro en el artículo sobre documentos interactivos.

Copyright © 2014-2018 Synergy Vision. Los artículos del Corpus se comparten bajo los términos de la licencia Creative Commons con Reconocimiento, Propósito no comercial, Compartir contenido similar, 4.0 Internacional (CC BY-NC-SA 4.0).

Citar el artículo.