1 Tu primera aplicación Shiny
Objetivos:
- Aprender la mínima estructura de una aplicación Shiny.
- Crear una aplicacion Shiny básica.
- Familiarizarnos con programación reactiva.
1.1 ¿Qué es Shiny?
Shiny es una librería para crear aplicaciones web por medio de R o Python, sin necesidad de saber HTML, CSS o JavaScript.
Pese a ello, las aplicaciones Shiny admiten mucha personalización y llegan a aplicarse en contextos académicos (herramienta de enseñanza, presentación de modelos) y no académicos (dashboards interactivos).
Ejemplos de aplicaciones Shiny:
1.2 Introducción
- Componenetes principales de una aplicación Shiny:
- UI: Interfaz de usuario (cómo se ve la app)
- server(): Función servidor (cómo funciona la app)
- Instalemos Shiny usando el siguiente comando en la terminal de R:
install.packages("shiny")
1.3 Crear un directorio y archivo de la app
Forma básica de Shiny app: Documento app.R dentro de algún directorio.
Dentro de app.R, insertar el siguiente código:
# Cargar el paquete Shiny
library(shiny)
# Definir la interfaz de usuario
<- fluidPage(
ui "Hola, mundo"
)
# Definir la interactividad de la app
<- function(input, output, session) {
server
}
# Construir y ejecutar la app creada
shinyApp(ui, server)
1.4 Ejecutar y detener la app
Para ejecutar la app, hacer click en el botón Run App de RStudio, o ejecutar
shiny::runApp()
dentro del directorio que contiene el archivo app.R.Para detener la app, hacer click en el botón Stop de RStudio, o presionar
Esc
oCtrl+C
en la terminal de R.
1.5 Añadir controles a la interfaz de usuario
<- fluidPage(
ui selectInput("dataset", label = "Dataset", choices = ls("package:datasets")),
verbatimTextOutput("resumen"),
tableOutput("tabla")
)
fluidPage()
es una función de diseño que inicializa todo el HTML, CSS y JavaScript que Shiny requiere.selectInput()
es un control de input que crea una lista de opciones con la cual el usuario puede interactuar.verbatimTextOutput()
ytableOutput()
son controles de output que fijan en qué sección de la interfaz de usuario se mostrará el resultado/output de tales funciones.
Para explorar las bases de datos que contiene R por default, podemos ejecutar el comando data()
.
1.6 Añadir reactividad
<- function(input, output, session) {
server $resumen <- renderPrint({
output<- get(input$dataset, "package:datasets")
dataset summary(dataset)
})
$tabla <- renderTable({
output<- get(input$dataset, "package:datasets")
dataset
dataset
}) }
- Sintaxis común en Shiny:
input$IDENTIFICADOR
output$IDENTIFICADOR
ejemploOutput
yrenderEjemplo
1.7 Expresiones reactivas
Con el fin de evitar repetir código, como se hizo con
get(input$dataset, "package:datasets")
, emplearemos una expresión reactiva.Las expresiones reactivas se crean definiendo su código dentro de la expresión
reactive({...})
.La razón porque Shiny emplea expresiones reactivas, en vez de usar, por ejemplo, variables globales, es que las expresiones reactivas rastrean automáticamente todas sus dependencias. Es decir, si una expresión reactiva Y depende de algún valor X, cualquier cambio en X automáticamente actualiza el valor de la expresión Y.
<- function(input, output, session) {
server # Creamos una expresión reactiva
<- reactive({
dataset get(input$dataset, "package:datasets")
})
$resumen <- renderPrint({
output# Usamos la expresión reactiva como si fuese una función
summary(dataset())
})
$tabla <- renderTable({
outputdataset()
}) }
1.8 Resumen
1.9 Ejercicios
Hacer los ejercicios 2, 3 y 4.
1.10 Extra
Galería de Shiny.
Extensiones de Shiny.