MulaiMulai sekarang secara gratis

Jadikan tabel interaktif

Datatable dari paket DT sering kali lebih baik untuk menampilkan data dalam aplikasi Shiny dibandingkan tabel bawaan. Tabel Shiny dapat diubah menjadi datatable dengan dua modifikasi kode sederhana: alih-alih menggunakan tableOutput() dan renderTable(), Anda menggunakan DT::dataTableOutput() dan DT::renderDataTable(). Datatable memiliki beragam opsi penyesuaian, namun kita tidak akan menggunakan opsi khusus apa pun.

Perhatikan bahwa dengan paket DT, konvensinya adalah tidak memuat paket DT, dan sebagai gantinya menggunakan prefiks DT:: saat memanggil fungsi datatable.

Latihan ini adalah bagian dari kursus

Studi Kasus: Membangun Aplikasi Web dengan Shiny di R

Lihat Kursus

Petunjuk latihan

Kode untuk aplikasi Shiny dari latihan pemrograman sebelumnya disediakan tanpa modifikasi. Tugas Anda adalah mengganti tabel Shiny dasar dengan tabel DT. Secara khusus:

  • Di UI, ganti fungsi keluaran tabel dengan keluaran datatable DT (baris 11).
  • Di server, ganti fungsi perenderan tabel dengan fungsi render datatable DT (baris 31).

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

ui <- fluidPage(
  h1("Gapminder"),
  sliderInput(inputId = "life", label = "Life expectancy",
              min = 0, max = 120,
              value = c(30, 50)),
  selectInput("continent", "Continent",
              choices = c("All", levels(gapminder$continent))),
  downloadButton("download_data"),
  plotOutput("plot"),
  # Replace the tableOutput() with DT's version
  tableOutput("table")
)

server <- function(input, output) {
  filtered_data <- reactive({
    data <- gapminder
    data <- subset(
      data,
      lifeExp >= input$life[1] & lifeExp <= input$life[2]
    )
    if (input$continent != "All") {
      data <- subset(
        data,
        continent == input$continent
      )
    }
    data
  })
  
  # Replace the renderTable() with DT's version
  output$table <- renderTable({
    data <- filtered_data()
    data
  })

  output$download_data <- downloadHandler(
    filename = "gapminder_data.csv",
    content = function(file) {
      data <- filtered_data()
      write.csv(data, file, row.names = FALSE)
    }
  )

  output$plot <- renderPlot({
    data <- filtered_data()
    ggplot(data, aes(gdpPercap, lifeExp)) +
      geom_point() +
      scale_x_log10()
  })
}

shinyApp(ui, server)
Edit dan Jalankan Kode