Sta weergave van "All" continenten toe
Voordat de continentselector was toegevoegd, liet de Shiny-app data voor alle continenten zien. Nu de selector er is, kun je per continent bekijken. Maar wat als de gebruiker eigenlijk niet op een specifiek continent wil filteren en liever alles ziet? Helaas is die mogelijkheid verdwenen door de selector toe te voegen.
Het choices-argument van de functie selectInput() kun je aanpassen om een extra waarde aan de continentlijst toe te voegen. Als die waarde wordt gekozen, kun je het filteren op continent uitschakelen.
Deze oefening maakt deel uit van de cursus
Casestudies: webapplicaties bouwen met Shiny in R
Oefeninstructies
Voeg in de select input een optie toe om "All" continenten te kiezen. Als die optie is geselecteerd, voer dan geen continentfiltering uit. Concreet:
- Voeg een "All"-waarde toe aan de lijst met opties die aan de select input in de UI worden doorgegeven.
- Gebruik in de server een if-statement om te controleren of het continent is ingesteld op "All". Als "All" is gekozen, voer dan geen filtering op continenten uit (regel 20).
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
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)