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, kursun bir parçasıdır

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

Kursa Göz Atın

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ı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

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