6.2 Práctica Guiada

6.2.1 Ejemplo 2. Gapminder

Construyamos nuestro propio ejemplo con los datos de Gapminder. Para eso, vamos a ver que la manera más cómoda de escribir una shiny app no es en el orden en que aparece el código final.

Al código hay que comerlo de a pedacitos.

  1. Pensamos qué queremos mostrar
  2. Escribimos código estático para un caso particular.
  3. Pensamos qué partes queremos generalizar.
  4. Armamos una función que tome como parámetros aquello que generalizamos
  5. Armamos un shiny estático que nos muestre el resultado de la función con parámetros fijos
  6. Agregamos los inputs en el ui
  7. reemplazamos los parámetros fijos por los de input en el server
  8. Agregamos texto y otros elementos ‘cosméticos’

A cada paso vamos armando un código que no falle. De esta forma es más fácil detectar los errores.

## # A tibble: 1,704 x 6
##    country     continent  year lifeExp      pop gdpPercap
##    <fct>       <fct>     <int>   <dbl>    <int>     <dbl>
##  1 Afghanistan Asia       1952    28.8  8425333      779.
##  2 Afghanistan Asia       1957    30.3  9240934      821.
##  3 Afghanistan Asia       1962    32.0 10267083      853.
##  4 Afghanistan Asia       1967    34.0 11537966      836.
##  5 Afghanistan Asia       1972    36.1 13079460      740.
##  6 Afghanistan Asia       1977    38.4 14880372      786.
##  7 Afghanistan Asia       1982    39.9 12881816      978.
##  8 Afghanistan Asia       1987    40.8 13867957      852.
##  9 Afghanistan Asia       1992    41.7 16317921      649.
## 10 Afghanistan Asia       1997    41.8 22227415      635.
## # … with 1,694 more rows

6.2.1.1 1. qué queremos mostrar

  • tenemos tres variables que podrían ser agrupadoras: País, continente y año
  • y tres variables que puede ser interesante representar: Esperanza de vida, población y PBI per cápita

Podríamos mostrar por ejemplo la serie de tiempo de algún país para alguna variable

6.2.1.3 3. partes que queremos generalizar.

  • El gráfico podría ser para cualquier país (o para un conjunto de países!)
  • podríamos elegir qué variable ver

6.2.1.5 5. shiny estático con parámetros fijos

ver ejemplo_2_a

6.2.1.6 6. Agregamos los inputs en el ui

Necesitamos agregar dos inputs: País y variable.

Para opciones podemos usar selectize

selectizeInput(inputId, label, choices, selected = NULL, multiple = FALSE, options = NULL)

Podemos crear la lista de opciones de países automaticamente

##  [1] Afghanistan Albania     Algeria     Angola      Argentina  
##  [6] Australia   Austria     Bahrain     Bangladesh  Belgium    
## 142 Levels: Afghanistan Albania Algeria Angola Argentina ... Zimbabwe

ver ejemplo_2_b

6.2.1.7 7. reemplazamos los parámetros fijos por los de input en el server

ver ejemplo_2_c

6.2.1.8 8. Tuneamos a discreción

Una vez que tenemos un shiny funcionando como queríamos, podemos agregar tags y texto para agregar explicaciones y emprolijar los resultados.



texto para ayudas

6.2.1.9 Multiples pestañas

También puede ocurrir que queremos mostrar varios resultados en un mismo shiny. En nuestro ejemplo, podríamos querer mostrar una tabla con los datos.

  • Para eso podemos usar tabsetPanel en el ui

  • Imaginemos que queremos tener dos tabs: Una con el gráfico, y otra con una tabla de resultados:

Entonces, en el shiny debemos agregar:

Mientras que en el server debemos generar un nuevo resultado, llamado tabla con los datos

ver ejemplo_2_d