Voeg een interactieve tabeloutput toe
Er zijn meerdere htmlwidgets-pakketten zoals DT, leaflet, plotly, enz. die zeer interactieve resultaten leveren en eenvoudig in Shiny-apps geïntegreerd kunnen worden met bijna hetzelfde patroon. Zo kun je een statische tabel in een Shiny-app omzetten naar een interactieve tabel met het DT-pakket:
- Maak een interactieve tabel met
DT::datatable(). - Render deze met
DT::renderDT(). - Toon deze met
DT::DTOutput().
In deze oefening werk je de eerder gemaakte app bij en vervang je de statische tabel door een interactieve tabel.
Deze oefening maakt deel uit van de cursus
Webapplicaties bouwen met Shiny in R
Oefeninstructies
- Maak een interactieve tabeloutput met
DTmet de 10 populairste namen per geslacht en jaar. Je kunt de functietop_10_names()gebruiken om een data frame te genereren om weer te geven, en dit doorgeven aanDT::datatable(). - Toon de tabel in de UI.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
ui <- fluidPage(
titlePanel("What's in a Name?"),
# Add select input named "sex" to choose between "M" and "F"
selectInput('sex', 'Select Sex', choices = c("M", "F")),
# Add slider input named "year" to select year between 1900 and 2010
sliderInput('year', 'Select Year', min = 1900, max = 2010, value = 1900),
# MODIFY CODE BELOW: Add a DT output named "table_top_10_names"
tableOutput('table_top_10_names')
)
server <- function(input, output, session){
top_10_names <- function(){
babynames %>%
filter(sex == input$sex) %>%
filter(year == input$year) %>%
slice_max(prop, n = 10)
}
# MODIFY CODE BELOW: Render a DT output named "table_top_10_names"
output$table_top_10_names <- renderTable({
top_10_names()
})
}
shinyApp(ui = ui, server = server)