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

Farklı çıktılarını farklı sekmelere yerleştir

Çok fazla içeriğin olduğunda ve bunu bölmek istediğinde sekmeler çok kullanışlıdır. Bir sekme oluşturmak için, UI öğelerini tabPanel() fonksiyonunun içine alman yeterli; ayrıca title argümanını kullanarak sekmeye bir başlık vermelisin.

Sekmelerin UI'da görünmesi için, sekme panellerinin tabsetPanel() içine alınarak bir sekme seti "konteyneri" içinde gruplanması gerekir.

Görevinde Shiny uygulamasına sekmeler ekleyeceksin: girdiler ve indirme düğmesi bir sekmede, grafik başka bir sekmede ve tablo üçüncü bir sekmede olsun. Bu yalnızca görsel bir değişiklik olduğundan, tüm kod değişiklikleri yalnızca UI kısmında yapılacak.

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ı

  • Üç sekme paneli için bir konteyner oluşturmak üzere tabsetPanel() fonksiyonunu kullan:
    • Girdiler için ilk bir sekme ve sekmenin adı "Inputs" olsun.
    • Grafiği gösteren ikinci bir sekme ve sekmenin adı "Plot" olsun (satır 16).
    • Tabloyu gösteren üçüncü bir sekme ve sekmenin adı "Table" olsun (satır 21).

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

ui <- fluidPage(
    h1("Gapminder"),
    # Create a container for tab panels
    ___(
        # Create an "Inputs" tab
        tabPanel(
            title = ___,
            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")
        ),
        # Create a "Plot" tab
        ___(
            title = "Plot",
            plotOutput("plot")
        ),
        # Create "Table" tab
        ___(
            title = ___,
            DT::dataTableOutput("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
  })
  
  output$table <- DT::renderDataTable({
    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