Lọc theo tuổi thọ kỳ vọng
Lợi ích thực sự của Shiny thể hiện khi kết hợp đầu vào với đầu ra. Bảng đã tạo ở bài trước là tĩnh—không thể thay đổi—nhưng để khám phá dữ liệu, sẽ tốt hơn nếu người dùng có thể quyết định xem phần dữ liệu nào.
Bạn có thể làm được điều này bằng cách thêm một đầu vào cho phép người dùng chọn giá trị để lọc dữ liệu. Như vậy, bảng bạn tạo ở bài trước sẽ trở nên động.
Một biến trong bộ dữ liệu gapminder là lifeExp (tuổi thọ kỳ vọng). Nhiệm vụ của bạn là thêm một thanh trượt vào ứng dụng Shiny để người dùng chọn giá trị tối thiểu và tối đa của tuổi thọ, và bảng chỉ hiển thị dữ liệu khớp với các giá trị này.
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 thanh trượt vào UI với ID "life", giá trị tối thiểu là 0, tối đa là 120, và giá trị mặc định là 30–50.
- Bên trong hàm render, dùng giá trị đầu vào để lọc
gapminderchỉ giữ các bản ghi cólifeExpnằm giữa giá trị tối thiểu và tối đa (bao gồm cả hai đầu).
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"),
# Add a slider for life expectancy filter
___(inputId = ___, label = "Life expectancy",
min = ___, max = ___,
value = c(30, 50)),
tableOutput("table")
)
server <- function(input, output) {
output$table <- renderTable({
data <- gapminder
data <- subset(
data,
# Use the life expectancy input to filter the data
lifeExp >= ___life[1] & lifeExp <= ___life[2]
)
data
})
}
shinyApp(ui, server)