การสร้างฟังก์ชันตัวช่วย
shinydashboard รองรับการเพิ่มองค์ประกอบได้หลากหลาย การจะให้ input ของผู้ใช้โต้ตอบกับ output ของ dashboard ได้ ต้องกำหนดการโต้ตอบเหล่านั้นไว้ภายในฟังก์ชัน render ที่อยู่ใน server
หากมีการโต้ตอบและ output หลายรายการ โค้ดอาจยาวและซับซ้อนได้อย่างรวดเร็ว วิธีหนึ่งที่ช่วยแก้ปัญหานี้คือการสร้างฟังก์ชันตัวช่วยของตัวเองไว้นอก shinydashboard
ในแบบฝึกหัดนี้ จะสร้างฟังก์ชันตัวช่วย 2 ฟังก์ชัน ได้แก่:
num_listings(): คืนค่าจำนวนรายการที่กรองแล้วตามช่วงpriceที่กำหนดmake_plots(): สร้าง boxplot หรือ violin plot ตามตัวเลือกของผู้ใช้ และข้อมูลที่กรองแล้วตามช่วงprice
โหลด listings ไว้แล้ว และนำเข้า sf, tidyverse และ leaflet เรียบร้อยแล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้างแดชบอร์ดด้วย shinydashboard
คำแนะนำการฝึกหัด
- กรอง
listingsให้อยู่ในช่วงระหว่างขอบเขตซ้ายและขอบเขตขวาของอาร์กิวเมนต์rangeซึ่งเป็นตัวแทนของ input จาก shinyApp - กำหนดเงื่อนไข if-else ให้ถูกต้อง โดยให้แสดง boxplot เมื่อ
choiceตรงกับ"Box plots"และแสดง violin plot เมื่อตรงกับ"Violin plots"
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
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()
}}