Aan de slagGa gratis aan de slag

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:

  1. Maak een interactieve tabel met DT::datatable().
  2. Render deze met DT::renderDT().
  3. 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

Cursus bekijken

Oefeninstructies

  • Maak een interactieve tabeloutput met DT met de 10 populairste namen per geslacht en jaar. Je kunt de functie top_10_names() gebruiken om een data frame te genereren om weer te geven, en dit doorgeven aan DT::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)
Code bewerken en uitvoeren