BaşlayınÜcretsiz Başlayın

Tabloyu etkileşimli yap

Yerleşik tablolara kıyasla, Shiny uygulamalarında veriyi göstermek için DT paketindeki datatable'lar çoğu zaman daha iyi bir yoldur. Shiny tablolarını iki basit kod değişikliğiyle datatable'a çevirebilirsin: tableOutput() ve renderTable() yerine DT::dataTableOutput() ve DT::renderDataTable() kullanılır. Datatable'ların birçok özelleştirme seçeneği vardır, ancak burada özel bir seçenek kullanmayacağız.

Not: DT paketiyle çalışırken, paketi yüklememek ve datatable işlevlerini çağırırken DT:: önekini kullanmak bir konvansiyondur.

Bu egzersiz

Vaka Çalışmaları: R ile Shiny Kullanarak Web Uygulamaları Geliştirme

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

Önceki kodlama egzersizindeki Shiny uygulamasının kodu, herhangi bir değişiklik yapılmadan sağlanıyor. Görevin, temel Shiny tablosunu bir DT tablosuyla değiştirmek. Özellikle:

  • UI içinde, tablo çıktı işlevini DT datatable çıktı işleviyle değiştir (satır 11).
  • Server içinde, tablo oluşturma işlevini DT datatable oluşturma işleviyle değiştir (satır 31).

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

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)
Kodu Düzenle ve Çalıştır