Buscar..


Crear una aplicación

Shiny es un paquete R desarrollado por RStudio que permite la creación de páginas web para mostrar interactivamente los resultados de un análisis en R.

Hay dos formas sencillas de crear una aplicación Shiny:

  • en un archivo .R , o
  • en dos archivos: ui.R y server.R .

Una aplicación Shiny se divide en dos partes:

  • ui : Un script de interfaz de usuario, que controla el diseño y la apariencia de la aplicación.
  • servidor : un script de servidor que contiene código para permitir que la aplicación reaccione.

Un archivo

library(shiny)

# Create the UI
ui <- shinyUI(fluidPage(
    # Application title
    titlePanel("Hello World!")
))

# Create the server function
server <- shinyServer(function(input, output){})

# Run the app
shinyApp(ui = ui, server = server)

Dos archivos

Crear archivo ui.R

library(shiny)

# Define UI for application
shinyUI(fluidPage(  
  # Application title
  titlePanel("Hello World!")
))

Crear archivo server.R

library(shiny)

# Define server logic
shinyServer(function(input, output){})

Boton de radio

Puede crear un conjunto de botones de opción utilizados para seleccionar un elemento de una lista.

Es posible cambiar la configuración:

  • seleccionado: el valor seleccionado inicialmente (carácter (0) para ninguna selección)
  • en línea: horizontal o vertical
  • anchura

También es posible añadir HTML.

library(shiny)

ui <- fluidPage(    
  radioButtons("radio", 
               label = HTML('<FONT color="red"><FONT size="5pt">Welcome</FONT></FONT><br> <b>Your favorite color is red ?</b>'),
               choices = list("TRUE" = 1, "FALSE" = 2),
               selected = 1,
               inline = T,
               width = "100%"),      
  fluidRow(column(3, textOutput("value")))) 


server <- function(input, output){
  output$value <- renderPrint({
    if(input$radio == 1){return('Great !')}
     else{return("Sorry !")}})}

shinyApp(ui = ui, server = server)

introduzca la descripción de la imagen aquí

Grupo de casilla de verificación

Cree un grupo de casillas de verificación que se pueden usar para alternar múltiples opciones de forma independiente. El servidor recibirá la entrada como un vector de caracteres de los valores seleccionados.

library(shiny)

ui <- fluidPage(    
  checkboxGroupInput("checkGroup1", label = h3("This is a Checkbox group"), 
                 choices = list("1" = 1, "2" = 2, "3" = 3),
                 selected = 1),
  fluidRow(column(3, verbatimTextOutput("text_choice")))
  ) 


server <- function(input, output){
  output$text_choice <- renderPrint({
    return(paste0("You have chosen the choice ",input$checkGroup1))})
} 

shinyApp(ui = ui, server = server)

introduzca la descripción de la imagen aquí

Es posible cambiar la configuración:

  • etiqueta: título
  • opciones: valores seleccionados
  • seleccionado: el valor seleccionado inicialmente (NULL para ninguna selección)
  • en línea: horizontal o vertical
  • anchura

También es posible añadir HTML.

Seleccionar cuadro

Cree una lista de selección que se pueda usar para elegir uno o varios elementos de una lista de valores.

library(shiny)

ui <- fluidPage(    
  selectInput("id_selectInput", 
          label = HTML('<B><FONT size="3">What is your favorite color ?</FONT></B>'), 
          multiple = TRUE,
          choices = list("red" = "red", "green" = "green", "blue" = "blue", "yellow" = "yellow"), 
          selected = NULL),
  br(), br(),
  fluidRow(column(3, textOutput("text_choice")))) 


server <- function(input, output){
  output$text_choice <- renderPrint({
    return(input$id_selectInput)})
}

shinyApp(ui = ui, server = server)

introduzca la descripción de la imagen aquí

Es posible cambiar la configuración:

  • etiqueta: título
  • opciones: valores seleccionados
  • seleccionado: el valor seleccionado inicialmente (NULL para ninguna selección)
  • múltiple: VERDADERO o FALSO
  • anchura
  • tamaño
  • selectize: TRUE o FALSE (para uso o no selectize.js, cambie la pantalla)

También es posible añadir HTML.

Lanzar una aplicación Shiny

Puede iniciar una aplicación de varias maneras, dependiendo de cómo cree su aplicación. Si su aplicación está dividida en dos archivos ui.R y server.R o si toda su aplicación está en un solo archivo.

1. Dos archivos de aplicación.

Sus dos archivos ui.R y server.R tienen que estar en la misma carpeta. Luego, puede iniciar su aplicación ejecutando en la consola la función shinyApp() y pasando la ruta del directorio que contiene la aplicación Shiny.

shinyApp("path_to_the_folder_containing_the_files")  

También puede iniciar la aplicación directamente desde Rstudio presionando el botón Ejecutar aplicación que aparece en Rstudio cuando ui.R un archivo ui.R o server.R .
ClicktoRun

O simplemente puede escribir runApp() en la consola si su directorio de trabajo es el directorio de Shiny App.

2. Una aplicación de archivo

Si creas tu en un archivo R , también puedes iniciarlo con la función shinyApp() .

  • dentro de su código:
library(shiny)

ui <- fluidPage() #Create the ui
server <- function(input, output){} #create the server

shinyApp(ui = ui, server = server) #run the App
  • en la consola agregando una ruta a un archivo .R que contiene la aplicación Shiny con el archivo de aplicación de appFile :
shinyApp(appFile="path_to_my_R_file_containig_the_app")

Widgets de control

Función Widget
botón de acción Botón de acción
checkboxGroupInput Un grupo de casillas de verificación.
checkboxInput Una sola casilla de verificación
fecha de entrada Un calendario para ayudar a la selección de la fecha.
dateRangeInput Un par de calendarios para seleccionar un rango de fechas.
fileInput Un asistente de control de carga de archivos
texto de ayuda Texto de ayuda que se puede agregar a un formulario de entrada
entrada numérica Un campo para introducir números.
botones de radio Un conjunto de botones de radio.
seleccionar entrada Un cuadro con opciones para elegir
control deslizante Una barra deslizante
botón de enviar Un boton de enviar
entrada de texto Un campo para ingresar texto
library(shiny)

# Create the UI
ui <- shinyUI(fluidPage(
  titlePanel("Basic widgets"),
  
  fluidRow(
    
    column(3,
           h3("Buttons"),
           actionButton("action", label = "Action"),
           br(),
           br(), 
           submitButton("Submit")),
    
    column(3,
           h3("Single checkbox"),
           checkboxInput("checkbox", label = "Choice A", value = TRUE)),
    
    column(3, 
           checkboxGroupInput("checkGroup", 
                              label = h3("Checkbox group"), 
                              choices = list("Choice 1" = 1, 
                                             "Choice 2" = 2, "Choice 3" = 3),
                              selected = 1)),
    
    column(3, 
           dateInput("date", 
                     label = h3("Date input"), 
                     value = "2014-01-01"))   
  ),
  
  fluidRow(
    
    column(3,
           dateRangeInput("dates", label = h3("Date range"))),
    
    column(3,
           fileInput("file", label = h3("File input"))),
    
    column(3, 
           h3("Help text"),
           helpText("Note: help text isn't a true widget,", 
                    "but it provides an easy way to add text to",
                    "accompany other widgets.")),
    
    column(3, 
           numericInput("num", 
                        label = h3("Numeric input"), 
                        value = 1))   
  ),
  
  fluidRow(
    
    column(3,
           radioButtons("radio", label = h3("Radio buttons"),
                        choices = list("Choice 1" = 1, "Choice 2" = 2,
                                       "Choice 3" = 3),selected = 1)),
    
    column(3,
           selectInput("select", label = h3("Select box"), 
                       choices = list("Choice 1" = 1, "Choice 2" = 2,
                                      "Choice 3" = 3), selected = 1)),
    
    column(3, 
           sliderInput("slider1", label = h3("Sliders"),
                       min = 0, max = 100, value = 50),
           sliderInput("slider2", "",
                       min = 0, max = 100, value = c(25, 75))
    ),
    
    column(3, 
           textInput("text", label = h3("Text input"), 
                     value = "Enter text..."))   
  )
  
))

# Create the server function
server <- shinyServer(function(input, output){})

# Run the app
shinyApp(ui = ui, server = server)

Depuración

debug() y debugonce() no funcionarán bien en el contexto de la mayoría de la depuración Shiny. Sin embargo, browser() declaraciones del browser() insertadas en lugares críticos pueden brindarle mucha información sobre cómo funciona (no) su código Shiny. Ver también: depuración usando browser()

Modo escaparate

El modo Showcase muestra su aplicación junto con el código que la genera y resalta las líneas de código en server.R a medida que las ejecuta.

Hay dos formas de habilitar el modo Showcase:

  • Inicie la aplicación Shiny con el argumento display.mode = "showcase", por ejemplo, runApp("MyApp", display.mode = "showcase") .
  • Cree un archivo llamado DESCRIPTION en su carpeta de aplicaciones Shiny y agregue esta línea en él: DisplayMode: Showcase .

Visualizador de registro reactivo

Reactivo Log Visualizer proporciona una herramienta interactiva basada en navegador para visualizar dependencias reactivas y ejecución en su aplicación. Para habilitar Reative Log Visualizer, ejecute las options(shiny.reactlog=TRUE) en la consola R o agregue esa línea de código en su archivo server.R. Para iniciar Reative Log Visualizer, presione Ctrl + F3 en Windows o Command + F3 en Mac cuando su aplicación se está ejecutando. Use las teclas de flecha izquierda y derecha para navegar en Reative Log Visualizer.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow