Tạo một số hàm trợ giúp
Có rất nhiều thành phần bạn có thể thêm vào một shinydashboard. Để cho phép tương tác giữa đầu vào của người dùng và đầu ra trên bảng điều khiển, bạn cần định nghĩa các tương tác này trong các hàm render đặt ở server.
Mã có thể trở nên rối rất nhanh nếu có nhiều tương tác và nhiều đầu ra. Một cách giải quyết là tạo các hàm trợ giúp riêng ở ngoài môi trường shinydashboard.
Sau đây, bạn sẽ xây dựng hai hàm trợ giúp:
num_listings(): Trả về số lượng listing dựa trên dữ liệu đã lọc trong một khoảngprice.make_plots(): Tạo boxplot hoặc violin plot dựa trên lựa chọn của người dùng, và dựa trên dữ liệu đã lọc trong một khoảngprice.
listings đã được nạp, và sf, tidyverse cùng leaflet đã được import.
Bài tập này là một phần của khóa học
Xây dựng Dashboard với shinydashboard
Hướng dẫn bài tập
- Lọc
listingssao cho dữ liệu chỉ nằm giữa hai giới hạn trái và phải của đối sốrange, vốn là một placeholder cho input của shinyApp. - Đặt điều kiện if-else đúng để vẽ boxplot khi
choicekhớp"Box plots", và vẽ violin plot khi là"Violin plots".
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.
num_listings <- function(range){
# Filter listings appropriately
filter(listings, price >= ___, price <= ___) %>% nrow()
}
make_plots <- function(range, choice){
filtered_listings <- filter(listings, price >= range[1], price <= range[2])
# Set the correct if-else conditions
if (choice == ___){
filtered_listings %>%
ggplot(aes(y = price, x = room_type)) + geom_boxplot() + theme_classic()
}
else if (___){
filtered_listings %>%
ggplot(aes(y = price, x = room_type)) + geom_violin() + theme_classic()
}}