Bắt đầu ngayBắt đầu miễn phí

Cho phép xem tất cả ("All") các châu lục

Trước khi thêm bộ chọn châu lục, ứng dụng Shiny hiển thị dữ liệu cho tất cả các châu lục. Sau khi thêm bộ chọn, dữ liệu có thể xem theo từng châu lục. Nhưng nếu người dùng không muốn lọc theo châu lục cụ thể và muốn xem tất cả thì sao? Tiếc là việc thêm bộ chọn châu lục đã làm mất khả năng đó.

Đối số choices của hàm selectInput() có thể chỉnh sửa để thêm một giá trị nữa vào danh sách châu lục, và khi giá trị này được chọn, bạn có thể tắt việc lọc theo châu lục.

Bài tập này là một phần của khóa học

Nghiên cứu tình huống: Xây dựng ứng dụng web với Shiny trong R

Xem khóa học

Hướng dẫn bài tập

Thêm một tùy chọn trong select input để chọn tất cả châu lục ("All"). Khi tùy chọn này được chọn, không thực hiện lọc theo châu lục. Cụ thể:

  • Thêm giá trị "All" vào danh sách tùy chọn cung cấp cho select input trong UI.
  • Ở server, dùng câu lệnh if để kiểm tra xem châu lục có được đặt là "All" hay không. Nếu chọn "All" thì không lọc theo châu lục (dòng 20).

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

ui <- fluidPage(
  h1("Gapminder"),
  sliderInput(inputId = "life", label = "Life expectancy",
              min = 0, max = 120,
              value = c(30, 50)),
  # Add an "All" value to the continent list
  selectInput("continent", "Continent",
              choices = c(___, levels(gapminder$continent))),
  tableOutput("table")
)

server <- function(input, output) {
  output$table <- renderTable({
    data <- gapminder
    data <- subset(
      data,
      lifeExp >= input$life[1] & lifeExp <= input$life[2]
    )
    # Don't subset the data if "All" continent are chosen
    if (___) {
      data <- subset(
        data,
        continent == input$continent
      )
    }
    data
  })
}

shinyApp(ui, server)
Chỉnh sửa và Chạy Mã