ประเภทของ Input

การสร้างแดชบอร์ดด้วย shinydashboard

Png Kee Seng

Researcher

Input Functions

  • ใน UI ผู้ใช้สามารถระบุ input ได้
    • เปรียบเหมือนการสั่งอาหารกับพนักงาน
  • ใน shinyApp คำสั่งเหล่านี้จะส่งผ่าน server
  • ทำได้โดยเพิ่ม input function เข้าไปใน UI
  • <type>input(<identifying label>, <displayed label>, ...)
    • อาร์กิวเมนต์แรกคือ identifying label
    • อาร์กิวเมนต์ที่สองคือ displayed label
    • อาร์กิวเมนต์อื่น ๆ ขึ้นอยู่กับประเภทของ input
การสร้างแดชบอร์ดด้วย shinydashboard

ตัวอย่าง: การศึกษาด้านการนอนหลับ

  • สมมติว่าเราทำการศึกษาด้านการนอนหลับและรวบรวมข้อมูลไว้
  • ผู้ใช้ shinyApp จะสามารถระบุ input อะไรได้บ้าง?

ภาพประกอบการศึกษาด้านการนอนหลับ

1 Image by storyset on Freepik
การสร้างแดชบอร์ดด้วย shinydashboard

selectInput

  • input ที่ใช้บ่อยคือ selectInput()
  • ฟังก์ชันนี้สร้างเมนู drop-down ที่มีตัวเลือกหลายรายการ
  • อาร์กิวเมนต์ที่สามคือ vector ของตัวเลือกที่เป็นไปได้
  • ในตัวอย่างนี้มีตัวเลือกทั้งหมด 4 รายการ
  • ตอนนี้ให้ server ว่างไว้ก่อน
  • เรนเดอร์ shinyApp โดยรัน shinyApp()
ui <- fluidPage(
  titlePanel("Sleeping habits in America"), 
    selectInput("selectlabel", 
                "Select an option",

choices = c("Option 1", "Option 2", "Option 3", "Option 4"))
server <- function(input, output, session) {
}
shinyApp(ui, server)
การสร้างแดชบอร์ดด้วย shinydashboard

selectInput

selectInput แบบเลือกค่าเดียว

การสร้างแดชบอร์ดด้วย shinydashboard

selectInput แบบเลือกหลายค่า

  • เพิ่มอาร์กิวเมนต์ multiple ได้อีกด้วย
    ui <- fluidPage(
    titlePanel("Sleeping habits in America"), 
      selectInput("selectlabel", 
                  "Select an option",
                  choices = c("Option 1", "Option 2", "Option 3", "Option 4"),
                  multiple = TRUE))
    server <- function(input, output, session) {
    }
    shinyApp(ui, server)
    
การสร้างแดชบอร์ดด้วย shinydashboard

selectInput แบบเลือกหลายค่า

selectInput แบบเลือกหลายค่า

การสร้างแดชบอร์ดด้วย shinydashboard

textInput

  • มีอาร์กิวเมนต์สำคัญอีก 2 รายการ
    • value: ค่าที่กรอกไว้ล่วงหน้าใน textbox
    • placeholder: ข้อความตัวอย่างที่แสดงใน textbox
ui <- fluidPage(
  titlePanel("Sleeping habits in America"), 
  textInput("textlabel", 
            "Tell me your name", 

value = "Birdie",
placeholder = "Don"))
server <- function(input, output, session) {
}
shinyApp(ui, server)
การสร้างแดชบอร์ดด้วย shinydashboard

textInput

ตัวอย่างการใช้ textInput

การสร้างแดชบอร์ดด้วย shinydashboard

checkboxInput

  • แสดง checkbox เดียวในแอป
  • value: TRUE หรือ FALSE เพื่อกำหนดสถานะเริ่มต้นของ checkbox
  • มีตัวแปร checkboxInput อีกแบบหนึ่งคือ checkboxGroupInput
ui <- fluidPage(
  titlePanel("Sleeping habits in America"), 
  checkboxInput("checkboxlabel",
                "65 years and over",

value = FALSE))
server <- function(input, output, session) { } shinyApp(ui, server)
การสร้างแดชบอร์ดด้วย shinydashboard

checkboxInput

ตัวอย่างการใช้ checkboxInput

การสร้างแดชบอร์ดด้วย shinydashboard

sliderInput

  • slider ช่วยให้ผู้ใช้ทำได้สองอย่าง
    • เลือกค่าตัวเลขเดียวจากช่วงที่กำหนด
    • เลือกค่าตัวเลขสองค่าจากช่วงที่กำหนด
  • หากต้องการเลือกค่าเดียว ต้องกำหนด min และ max
  • ค่าเริ่มต้นกำหนดด้วย value
  • ขนาดของแต่ละขั้นกำหนดด้วย step
ui <- fluidPage(
  titlePanel("Sleeping habits in America"), 
  sliderInput("sliderlabel",
              "Average hours of sleep",

min = 7.5, max = 11,
value = 9,
step = 0.02))
server <- function(input, output, session) { } shinyApp(ui, server)
การสร้างแดชบอร์ดด้วย shinydashboard

sliderInput

ตัวอย่างการใช้ sliderInput แบบเลือกค่าเดียว

การสร้างแดชบอร์ดด้วย shinydashboard

sliderInput แบบช่วงค่า

  • slider แบบสองด้านทำได้โดยกำหนด value เป็น vector ขนาด 2
ui <- fluidPage(
  titlePanel("Sleeping habits in America"), 
  sliderInput("sliderlabel",
              "Average hours of sleep",
              min = 7.5,
              max = 11,

value = c(8, 10),
step = 0.02)) server <- function(input, output, session) { } shinyApp(ui, server)
การสร้างแดชบอร์ดด้วย shinydashboard

sliderInput แบบช่วงค่า

slider แบบช่วงค่า

การสร้างแดชบอร์ดด้วย shinydashboard

มาฝึกกันเถอะ!

การสร้างแดชบอร์ดด้วย shinydashboard

Preparing Video For Download...