Shiny

Resumen

Se introduce el paquete Shiny de R, para el desarrollo de aplicaciones web interactivas. Se presenta la estructura de una aplicación Shiny y un ejemplo de aplicación básica. También se discuten algunas de las opciones disponibles para el desarrollo de tableros de control y la puesta en producción de aplicaciones Shiny.

Trabajo previo

Introducción

Shiny es un paquete de R que facilita el desarrollo de aplicaciones web interactivas.

Las aplicaciones Shiny deben ejecutarse en un servidor de Shiny, el cual puede estar ubicado en cualquier computador habilitado para ejecutar código en R como, por ejemplo, la estación de trabajo del programador (principalmente para efectos de pruebas), un servidor ubicado en la red de una organización o un servidor en la nube (ej. shinyapps.io).

Estructura de una aplicación Shiny

Una aplicación Shiny tiene tres componentes principales:

La definición de ui y de server pueden almacenarse en archivos separados llamados respectivamente ui.R y server.R. A partir de la versión 0.10.2 de Shiny, se permite que una aplicación Shiny completa esté contenida en un archivo llamado app.R. Deben usarse exactamente los nombres mencionados tanto para los componentes de la aplicación como para los archivos.

Ejemplo de aplicación básica

El siguiente bloque de código muestra una aplicación Shiny trivial contenida en un archivo app.R.

library(shiny)

# Definición del objeto ui
ui <- fluidPage(
  "Hola mundo"
)

# Definición de la función server
server <- function(input, output, session) {
}

# Llamado a la función shinyApp()
shinyApp(ui, server)

Antes de ejecutar la aplicación, debe instalarse el paquete shiny con:

install.packages("shiny")

La aplicación puede ejecutarse copiando y pegando el código en la consola de R/RStudio. También puede guardarse el código en un archivo llamado, por ejemplo, shinyapp/app.R y ejecutarse con la función runApp(), la cual recibe como argumento la ruta del directorio en el que se encuentra la aplicación:

runApp("shinyapp")

El nombre y la ruta del directorio (shinyapp) puede ser elegidos por el programador. En el llamado a la función, la ruta debe especificarse de manera relativa al directorio del trabajo de R. También puede especificarse una ruta absoluta, por ejemplo:

runApp("/home/mfvargas/shinyapp")

Al ejecutarse la aplicación, se iniciará un servidor que emitirá en la consola de R/RStudio un mensaje similar a:

#> Listening on http://127.0.0.1:5143

Este mensaje indica que el servidor está “escuchando” a través del protocolo de transferencia de hipertexto (HTTP) en la dirección IP 127.0.0.1, la cual es interna (i.e. del computador del desarrollador), y en el puerto de red 5143 (puede ser cualquier otro que esté disponible).

Mientras se ejecuta la aplicación Shiny, la consola de R/RStudio no puede ejecutar más comandos. Para detener la aplicación, puede presionarse el símbolo de stop en la barra de herramientas de la consola, hacer clic en la consola y presionar Esc o Ctrl+C, o cerrar la ventana de la aplicación.

Generación y ejecución de una aplicación básica en RStudio

En RStudio, puede generarse una aplicación Shiny básica de dos maneras:

Además de la función runApp(), la aplicación Shiny puede ejecutarse con el botón Run App de la barra de tareas de RStudio.

Controles de entrada y salida

La interfaz de una aplicación Shiny consiste de un conjunto de:

Desarrollo de tableros de control

Shiny facilita la elaboración de tableros de control (dashboards) con el apoyo de dos paquetes:

Puesta en producción de aplicaciones Shiny

Para su puesta en producción (deploy), una aplicación Shiny requiere un servidor de Shiny, el cual puede estar ubicado en cualquier computador habilitado para ejecutar código en R como, por ejemplo, la estación de trabajo del programador (principalmente para efectos de pruebas), un servidor ubicado en la red de una organización o un servidor en la nube.

La plataforma shinyapps.io permite publicar en la red una aplicación Shiny.

Corrections

If you see mistakes or want to suggest changes, please create an issue on the source repository.

Reuse

Text and figures are licensed under Creative Commons Attribution CC BY-SA 4.0. Source code is available at https://github.com/tpb728O-programaciongeoespacialr/2021ii/, unless otherwise noted. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".