Aan de slagBegin gratis

Filteren op levensverwachting

De echte kracht van Shiny komt naar voren wanneer inputs met outputs worden gecombineerd. De tabel uit de vorige oefening is statisch—je kunt hem niet aanpassen—maar voor verkenning is het handiger als de gebruiker zelf kan bepalen welke subset van de data hij wil zien.

Dit kun je doen door een input toe te voegen waarmee de gebruiker een waarde kan kiezen om de data op te filteren. Zo maak je de tabel uit de vorige oefening dynamisch.

Een van de variabelen in de gapminder-gegevensset is lifeExp (levensverwachting). Je taak is om een schuifregelaar toe te voegen aan de Shiny-app waarmee de gebruiker een minimale en maximale levensverwachting kan kiezen. De tabel toont dan alleen data die binnen deze waarden valt.

Deze oefening maakt deel uit van de cursus

Casestudies: webapplicaties bouwen met Shiny in R

Bekijk cursus

Oefeninstructies

  • Voeg een schuifregelaar toe aan de UI met ID "life", een minimale waarde van 0, een maximale waarde van 120 en een standaardselectie van 30–50.
  • Gebruik binnen de render-functie de inputwaarde om de gapminder-data te filteren en alleen records op te nemen met een lifeExp tussen de minimale en maximale waarden (beide inclusief).

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

ui <- fluidPage(
  h1("Gapminder"),
  # Add a slider for life expectancy filter 
  ___(inputId = ___, label = "Life expectancy",
      min = ___, max = ___,
      value = c(30, 50)),
  tableOutput("table")
)

server <- function(input, output) {
  output$table <- renderTable({
    data <- gapminder
    data <- subset(
      data,
      # Use the life expectancy input to filter the data
      lifeExp >= ___life[1] & lifeExp <= ___life[2]
    )
    data
  })
}

shinyApp(ui, server)
Code bewerken en uitvoeren