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
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)