MulaiMulai sekarang secara gratis

Tambahkan pemilih benua: select input

Ketika ada banyak opsi untuk dipilih pengguna, tombol radio dapat memakan banyak ruang dan mungkin kurang ideal. Select input—juga disebut 'dropdown list'—dapat digunakan untuk meminta pengguna memilih satu opsi dari daftar pilihan, tetapi dengan cara yang lebih ringkas. Dengan select input, semua opsi ditampilkan dalam daftar yang dapat digulir, sehingga tetap cocok meskipun Anda memiliki banyak pilihan.

Mirip dengan tombol radio, select input juga memiliki parameter choices dan selected. Selain itu, select input memiliki argumen multiple yang, jika diatur ke TRUE, memungkinkan pengguna memilih lebih dari satu nilai.

Kode untuk aplikasi Shiny dari latihan sebelumnya disediakan dengan sedikit modifikasi.

Latihan ini adalah bagian dari kursus

Studi Kasus: Membangun Aplikasi Web dengan Shiny di R

Lihat Kursus

Petunjuk latihan

  • Tambahkan selectInput() ke UI dengan ID "continents" dan label "Continents", dengan benua default diatur ke "Europe".
    • Pilihan dalam daftar harus mencakup semua benua yang ada di himpunan data gapminder.
    • Izinkan pengguna memilih beberapa benua secara bersamaan.
  • Tambahkan kode pada server sehingga hanya data untuk benua yang dipilih yang ditampilkan, dengan melakukan subset pada himpunan data gapminder (baris 23).

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      textInput("title", "Title", "GDP vs life exp"),
      numericInput("size", "Point size", 1, 1),
      checkboxInput("fit", "Add line of best fit", FALSE),
      radioButtons("color", "Point color",
                   choices = c("blue", "red", "green", "black")),
      # Add a continent dropdown selector
      ___(___, ___,
                  choices = levels(___),
                  multiple = ___,
                  selected = ___)
    ),
    mainPanel(
      plotOutput("plot")
    )
  )
)

# Define the server logic
server <- function(input, output) {
  output$plot <- renderPlot({
    # Subset the gapminder dataset by the chosen continents
    data <- subset(gapminder,
                   ___ %in% ___$continents)

    p <- ggplot(data, aes(gdpPercap, lifeExp)) +
      geom_point(size = input$size, col = input$color) +
      scale_x_log10() +
      ggtitle(input$title)
    
    if (input$fit) {
      p <- p + geom_smooth(method = "lm")
    }
    p
  })
}

shinyApp(ui = ui, server = server)
Edit dan Jalankan Kode