เพิ่มตัวเลือกดูข้อมูลทวีป "All"
ก่อนที่จะเพิ่มตัวเลือกทวีป แอป Shiny แสดงข้อมูลของทุกทวีป แต่เมื่อเพิ่มตัวเลือกทวีปเข้ามาแล้ว ผู้ใช้สามารถดูข้อมูลแยกตามทวีปได้ แต่จะเกิดอะไรขึ้นถ้าผู้ใช้ต้องการดูข้อมูลของทุกทวีปพร้อมกันอีกครั้ง? น่าเสียดายที่การเพิ่มตัวเลือกทวีปทำให้ความสามารถนั้นหายไป
สามารถแก้ไขได้โดยปรับอาร์กิวเมนต์ choices ของฟังก์ชัน selectInput() เพื่อเพิ่มค่าอีกหนึ่งค่าเข้าไปในลิสต์ทวีป และเมื่อเลือกค่านั้น ระบบจะหยุดการกรองตามทวีป
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
กรณีศึกษา: การสร้างเว็บแอปพลิเคชันด้วย Shiny ใน R
คำแนะนำการฝึกหัด
เพิ่มตัวเลือก "All" ในเมนูเลือกทวีป เมื่อเลือกตัวเลือกนี้ ให้ข้ามการกรองข้อมูลตามทวีป โดยมีรายละเอียดดังนี้
- เพิ่มค่า "All" เข้าไปในลิสต์ตัวเลือกที่ส่งให้กับ select input ใน UI
- ใน server ใช้คำสั่ง if เพื่อตรวจสอบว่าทวีปถูกตั้งค่าเป็น "All" หรือไม่ ถ้าเลือก "All" ให้ไม่ทำการกรองข้อมูลตามทวีป (บรรทัดที่ 20)
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
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)