IniziaInizia gratis

Consenti la visualizzazione di "All" i continenti

Prima di aggiungere il selettore del continente, l'app Shiny mostrava i dati per tutti i continenti. Ora che il selettore è stato aggiunto, i dati possono essere visualizzati per singolo continente. Ma cosa succede se l'utente decide che in realtà non vuole filtrare per un continente specifico e preferisce vederli tutti? Purtroppo, l'aggiunta del selettore ha rimosso questa possibilità.

L'argomento choices della funzione selectInput() può essere modificato per aggiungere un altro valore all'elenco dei continenti e, quando questo valore viene scelto, il filtro per continente può essere disattivato.

Questo esercizio fa parte del corso

Casi di studio: creare applicazioni web con Shiny in R

Visualizza il corso

Istruzioni dell'esercizio

Aggiungi un'opzione nel selettore per scegliere "All" i continenti. Quando è selezionata questa opzione, non applicare alcun filtro per continente. In particolare:

  • Aggiungi un valore "All" all'elenco di opzioni fornite al selettore nell'UI.
  • Nel server, usa un'istruzione if per verificare se il continente è impostato su "All". Se è stato scelto "All", non applicare alcun filtro sui continenti (riga 20).

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

ui <- fluidPage(
  h1("Gapminder"),
  sliderInput(inputId = "life", label = "Life expectancy",
              min = 0, max = 120,
              value = c(30, 50)),
  # Add an "All" value to the continent list
  selectInput("continent", "Continent",
              choices = c(___, levels(gapminder$continent))),
  tableOutput("table")
)

server <- function(input, output) {
  output$table <- renderTable({
    data <- gapminder
    data <- subset(
      data,
      lifeExp >= input$life[1] & lifeExp <= input$life[2]
    )
    # Don't subset the data if "All" continent are chosen
    if (___) {
      data <- subset(
        data,
        continent == input$continent
      )
    }
    data
  })
}

shinyApp(ui, server)
Modifica ed esegui il codice