Ricerca…


Crea un'app

Shiny è un pacchetto R sviluppato da RStudio che consente la creazione di pagine Web per visualizzare in modo interattivo i risultati di un'analisi in R.

Esistono due modi semplici per creare un'app Shiny:

  • in un file .R , o
  • in due file: ui.R e server.R .

Un'app Shiny è divisa in due parti:

  • ui : uno script dell'interfaccia utente, che controlla il layout e l'aspetto dell'applicazione.
  • server : uno script server che contiene codice per consentire all'applicazione di reagire.

Un file

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)

Due file

Crea il file ui.R

library(shiny)

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

Crea il file server.R

library(shiny)

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

Pulsante radio

È possibile creare un set di pulsanti di opzione utilizzati per selezionare un elemento da un elenco.

È possibile modificare le impostazioni:

  • selezionato: il valore inizialmente selezionato (carattere (0) per nessuna selezione)
  • in linea: orizzontale o verticale
  • larghezza

È anche possibile aggiungere 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)

inserisci la descrizione dell'immagine qui

Gruppo di caselle di controllo

Crea un gruppo di caselle di controllo che possono essere utilizzate per alternare più scelte in modo indipendente. Il server riceverà l'input come vettore di carattere dei valori selezionati.

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)

inserisci la descrizione dell'immagine qui

È possibile modificare le impostazioni:

  • etichetta: titolo
  • scelte: valori selezionati
  • selezionato: il valore inizialmente selezionato (NULL per nessuna selezione)
  • in linea: orizzontale o verticale
  • larghezza

È anche possibile aggiungere HTML.

Seleziona la casella

Crea un elenco di selezione che può essere utilizzato per scegliere uno o più elementi da un elenco di valori.

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)

inserisci la descrizione dell'immagine qui

È possibile modificare le impostazioni:

  • etichetta: titolo
  • scelte: valori selezionati
  • selezionato: il valore inizialmente selezionato (NULL per nessuna selezione)
  • multiplo: VERO o FALSO
  • larghezza
  • taglia
  • selectize: TRUE o FALSE (per utilizzare o non selectize.js, cambiare il display)

È anche possibile aggiungere HTML.

Avvia una app Shiny

Puoi avviare un'applicazione in diversi modi, a seconda di come crei la tua app. Se la tua app è divisa in due file ui.R e server.R o se tutta la tua app è in un unico file.

1. Un'app di due file

I tuoi due file ui.R e server.R devono trovarsi nella stessa cartella. È quindi possibile avviare l'app eseguendo nella console la funzione shinyApp() e passando il percorso della directory che contiene l'app Shiny.

shinyApp("path_to_the_folder_containing_the_files")  

Puoi anche avviare l'app direttamente da Rstudio premendo il pulsante Esegui app che appare su Rstudio quando ui.R un file ui.R o server.R .
ClicktoRun

Oppure puoi semplicemente scrivere runApp() sulla console se la tua directory di lavoro è la directory App Shiny.

2. Un'app di file

Se crei il tuo file R in uno puoi anche shinyApp() con la funzione shinyApp() .

  • all'interno del tuo codice:
library(shiny)

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

shinyApp(ui = ui, server = server) #run the App
  • nella console aggiungendo il percorso a un file .R contenente l'applicazione Shiny con l' appFile :
shinyApp(appFile="path_to_my_R_file_containig_the_app")

Controlla i widget

Funzione widget
ActionButton Pulsante di azione
checkboxGroupInput Un gruppo di caselle di controllo
checkboxInput Una singola casella di controllo
dateinput Un calendario per aiutare la selezione della data
dateRangeInput Una coppia di calendari per selezionare un intervallo di date
FileInput Una procedura guidata per il controllo del caricamento dei file
Testo guida Testo di aiuto che può essere aggiunto a un modulo di input
numericInput Un campo per inserire i numeri
tasti della radio Una serie di pulsanti radio
selectInput Una scatola con le opzioni tra cui scegliere
sliderInput Una barra di scorrimento
submitButton Un pulsante di invio
l'immissione di testo Un campo per inserire il testo
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)

Debug

debug() e debugonce() non funzionano bene nel contesto della maggior parte del debugging di Shiny. Tuttavia, le dichiarazioni di browser() inserite in punti critici possono fornire molte informazioni su come funziona (non) il codice di Shiny. Vedi anche: Debugging using browser()

Modalità Showcase

La modalità Showcase visualizza l'app accanto al codice che la genera e mette in evidenza le righe di codice nel server.R durante la sua esecuzione.

Ci sono due modi per abilitare la modalità Showcase:

  • Avvia l'app Shiny con l'argomento display.mode = "showcase", ad es. runApp("MyApp", display.mode = "showcase") .
  • Crea un file chiamato DESCRIPTION nella cartella dell'app Shiny e aggiungi questa riga: DisplayMode: Showcase .

Log Reactive Visualizer

Reactive Log Visualizer fornisce uno strumento interattivo basato su browser per la visualizzazione delle dipendenze reattive e dell'esecuzione nell'applicazione. Per attivare Reactive Log Visualizer, eseguire le options(shiny.reactlog=TRUE) nella console R o aggiungere tale riga di codice nel file server.R. Per avviare Reactive Log Visualizer, premi Ctrl + F3 su Windows o Command + F3 su Mac quando la tua app è in esecuzione. Utilizzare i tasti freccia sinistra e destra per navigare in Reactive Log Visualizer.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow