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
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 eenlifeExptussen 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)