ติดตั้ง Shiny Package ใน RStudio
ก่อนที่จะก้าวไปสู่การสร้างเว็บแอปพลิเคชันเชิงโต้ตอบภายใน RStudio เราควรติดตั้งแพ็คเกจ “Shiny” ไว้แล้ว ในการดำเนินการนี้ คุณต้องขยายเมนู 'เครื่องมือ' ของ RStudio ตามด้วยตัวเลือก 'ติดตั้งแพ็คเกจ' ภายในหน้าต่างที่เปิดอยู่ คุณต้องระบุแพ็คเกจที่คุณต้องการติดตั้ง เช่น “มันเงา” และแตะที่ปุ่ม “ติดตั้ง” RStudio จะติดตั้งแพ็คเกจมันวาวในคอนโซล RStudio
เริ่มต้นใช้งาน Shiny ใน R
ในการเริ่มต้นใช้งาน Shiny ใน R คุณต้องสร้างไฟล์ R ใหม่โดยใช้เมนู 'ไฟล์' ซึ่งอยู่ที่ตำแหน่งแรกของ RStudio ขยายและใช้ตัวเลือก 'ไฟล์ใหม่' ตามด้วยตัวเลือก 'สคริปต์ R' ไฟล์สคริปต์ 'ไม่มีชื่อ' จะถูกเปิดใน RStudio เปลี่ยนชื่อเป็นไฟล์ 'R' ในตำแหน่งที่คุณต้องการ
ตอนนี้ ให้โหลดแพ็คเกจที่จำเป็นเพื่อสร้างแอปพลิเคชันแบบโต้ตอบใน R เช่น การใช้ฟังก์ชัน 'library' ของ R คำสั่ง 'if' ใช้เพื่อติดตั้งแพ็คเกจที่ไม่เคยติดตั้งมาก่อน แพ็คเกจ Shiny ใช้เพื่อสร้างอินเทอร์เฟซแบบโต้ตอบสำหรับเว็บแอปพลิเคชันพร้อมกับการแสดงภาพกราฟิกบางส่วน แพ็คเกจ “dplyr” ส่วนใหญ่จะใช้เพื่ออำนวยความสะดวกในการจัดการข้อมูลใน R โดยใช้ฟังก์ชันที่มีประโยชน์บางอย่าง
สุดท้ายนี้ แพ็คเกจ “ggplot2” จะถูกโหลดเป็นแหล่งข้อมูลที่ยอดเยี่ยมในการแสดงภาพข้อมูลโดยการสร้างกราฟที่กำหนดเองและมีประสิทธิภาพ
ถ้า ( ! ต้องการเนมสเปซ ( 'แวววาว' เงียบๆ = จริง ) ) {
ติดตั้ง. แพคเกจ ( 'แวววาว' )
}
ถ้า ( ! ต้องการเนมสเปซ ( 'ดีพลีร์' เงียบๆ = จริง ) ) {
ติดตั้ง. แพคเกจ ( 'ดีพลีร์' )
}
ถ้า ( ! ต้องการเนมสเปซ ( 'ggplot2' เงียบๆ = จริง ) ) {
ติดตั้ง. แพคเกจ ( 'ggplot2' )
}
ห้องสมุด ( มันเงา )
ห้องสมุด ( ดีพลีร์ )
ห้องสมุด ( ggplot2 )
สร้างระบบให้คะแนนการสอบแบบโต้ตอบ
ภายในบทช่วยสอนนี้ เราจะสร้าง 'ระบบให้คะแนนการสอบ' สำหรับนักเรียนเพื่อให้ได้เกรดที่บรรลุผลผ่านคะแนนที่ได้เต็ม 100 สคริปต์ที่ให้มาคือองค์ประกอบ 'ui' ของแอป Shiny ซึ่งระบุการออกแบบและรูปลักษณ์ของ โปรแกรม. โปรแกรมสร้างฟลูอิดเพจ ซึ่งเป็นการออกแบบที่ปรับเปลี่ยนได้ซึ่งสามารถปรับขนาดให้เหมาะกับหน้าต่างเบราว์เซอร์ได้
“titlePanel” และ “sidebarLayout” เป็นลูกหลานของ “fluidPage” ชื่อ “Exam Grading System” ของโปรแกรมคือชื่อทั้งหมดที่แสดงใน “titlePanel” “sidebarPanel” และ “mainPanel” เป็นสองส่วนที่ “sidebarLayout” ใช้เพื่อแยกแอปพลิเคชันออกเป็น คู่อินพุตจะรวมอยู่ใน 'แถบด้านข้างแผง': 'textAreaInput' ชื่อ 'คะแนน' บวกกับ 'actionButton' ชื่อ 'คำนวณ'
นักเรียนแต่ละคนสามารถป้อนคะแนนได้หนึ่งคะแนนต่อบรรทัดโดยใช้ 'textAreaInput' การประเมินเกรดสามารถเริ่มได้โดยใช้ 'actionButton' คู่ของเอาต์พุตมีอยู่ใน 'mainPanel': 'tableOutput' ชื่อ 'Result' บวกกับ 'plotOutput' ชื่อ 'ResultGraph' ทั้ง “tableOutput” และ “plotOutput” จะนำเสนอผลการคำนวณในรูปแบบของกราฟ
อุ้ย <- หน้าของเหลว (titlePanel ( “ระบบให้คะแนนข้อสอบ” ) ,
แถบด้านข้างเค้าโครง (
แถบด้านข้างแผง (
textAreaInput ( 'คะแนน' , 'กรอกคะแนนสำหรับนักเรียน (หนึ่งรายการต่อบรรทัด):' , '' ) ,
ปุ่มการกระทำ ( 'คำนวณ' , “มาคำนวณเกรดกันเถอะ” )
) ,
mainPanel (
ตารางเอาท์พุต ( 'ผลลัพธ์' ) ,
พล็อตเอาท์พุต ( “กราฟผลลัพธ์” )
) ) )
วิธีการเซิร์ฟเวอร์สร้างตรรกะฝั่งเซิร์ฟเวอร์ของแอปพลิเคชัน เครื่องหมายสำหรับนักเรียนจะถูกจัดเก็บไว้ในตัวแปรปฏิกิริยาชื่อ 'data' ในตอนแรก สำหรับสิ่งนี้ ปุ่ม 'คำนวณ' จะถูกตรวจสอบโดยวิธี 'observeEvent' ของ R หลังจากที่ปุ่มถูกทริกเกอร์ โค้ดจะแปลงค่าที่ป้อนในฟิลด์ข้อความที่ป้อนเป็นค่าตัวเลขในขั้นต้น
แต่ละคะแนนจะตามด้วยการขึ้นบรรทัดใหม่โดยใช้ '\n' เพื่อป้อนคะแนนใหม่ที่บรรทัดถัดไป วิธีการจะวางคะแนนใดก็ตามที่พบในตัวแปร “data” หากผู้ใช้ไม่ได้ป้อนข้อมูลคะแนน วิธีการจะแสดงข้อความพร้อมข้อผิดพลาด
เซิร์ฟเวอร์ <- การทำงาน ( อินพุตเอาต์พุต ) {ข้อมูล <- ปฏิกิริยาปฏิกิริยา ( โมฆะ )
สังเกตเหตุการณ์ ( อินพุต $ คำนวณ {
คะแนน <- เช่น. ตัวเลข ( ไม่แสดงรายการ ( strsplit ( อินพุต $ คะแนน, ' \n ' ) ) )
ถ้า ( ความยาว ( คะแนน ) > 0 ) {
ข้อมูล ( คะแนน )
} อื่น {
ข้อมูล ( โมฆะ )
แสดงกิริยา ( โมดอลไดอะล็อก (
ชื่อ = 'ข้อผิดพลาด' ,
'ข้อผิดพลาด: โปรดเพิ่มมูลค่า!' ,
ง่ายปิด = จริง
) )
}
} )
มีการระบุเอาต์พุต 2 รายการ ได้แก่ “output$Result” บวก “output$ResultGraph” เพื่อแสดงคะแนนของนักเรียนและคะแนนที่ได้รับ เมธอดแบบไดนามิก renderTable() จะสร้างตารางข้อมูลของคะแนนทดสอบและเกรดของนักเรียนซึ่งมีป้ายกำกับว่า 'output$Result' เมธอด renderPlot() ซึ่งมีปฏิกิริยาเช่นเดียวกัน จะสร้างกราฟแท่งสำหรับเกรดของนักเรียนและบันทึกไว้ในเอาต์พุต “output$ResultGraph” ในทำนองเดียวกัน
ดังนั้นพวกเขาจะได้รับการตรวจสอบทุกครั้งที่มีการอัปเดตข้อมูลอินพุต นิพจน์ if (!is.null(data())) กำหนดว่าข้อมูลที่ได้รับนั้นเป็นโมฆะหรือไม่ สคริปต์ของคำสั่ง 'if' จะถูกดำเนินการหากไม่ว่างเปล่า เวกเตอร์ของคะแนนสำหรับนักเรียนประกอบขึ้นเป็น 'ข้อมูล' อินพุต นักเรียนทุกคนจะได้รับเกรดตามคะแนนของตนเองโดยใช้วิธี case_when() กรอบข้อมูลที่ประกอบด้วยเกรดของนักเรียนและเครื่องหมายทดสอบจะถูกสร้างขึ้นโดยใช้เมธอด data.frame() คอลัมน์ต่อไปนี้จะถูกเพิ่มในกรอบข้อมูล: “นักเรียน”, “คะแนน” และ “เกรด” การแจกแจงเกรดจะรวบรวมไว้ในตารางชื่อ 'GradeCount' โดยใช้เมธอด table()
ผลลัพธ์ $ ผลลัพธ์ <- renderTable ( {ถ้า ( ! เป็น. โมฆะ ( ข้อมูล ( ) ) ) {
เกรด <- case_เมื่อ (
ข้อมูล ( ) > 80 ~ 'เอ' ,
ข้อมูล ( ) > 60 ~ 'บี' ,
ข้อมูล ( ) > 40 ~ 'ค' ,
ข้อมูล ( ) > 30 ~ 'ด' ,
จริง ~ 'ฟ'
)
ข้อมูล. กรอบ ( นักเรียน = 1 : : ความยาว ( ข้อมูล ( ) ) , คะแนน = ข้อมูล ( ) , ระดับ = เกรด )
}
} )
เอาท์พุท$ResultGraph <- renderPlot ( {
ถ้า ( ! เป็น. โมฆะ ( ข้อมูล ( ) ) ) {
เกรด <- case_เมื่อ (
ข้อมูล ( ) > 80 ~ 'เอ' ,
ข้อมูล ( ) > 60 ~ 'บี' ,
ข้อมูล ( ) > 40 ~ 'ค' ,
ข้อมูล ( ) > 30 ~ 'ด' ,
จริง ~ 'ฟ'
)
การนับเกรด <- โต๊ะ ( เกรด )
แผนภูมิแท่งถูกสร้างขึ้นโดยใช้ไลบรารี “ggplot2” การนับ (จำนวนนักเรียนทั้งหมดที่ได้รับแต่ละเกรด) และคอลัมน์เกรดจะถูกสร้างขึ้นใน DataFrame กราฟแท่งที่มีข้อมูล 'เกรด' บน 'แกน x' และข้อมูล 'นับ' บน 'แกน y' สร้างขึ้นโดยใช้วิธี geom_bar() ตัวเลือก stat = “identity” สั่งให้ ggplot2 ใช้ข้อมูลจริงโดยไม่มีการเปลี่ยนแปลงใดๆ ชื่อ ป้ายกำกับแกน x และป้ายกำกับแกน y ล้วนถูกเพิ่มผ่านวิธี 'ห้องปฏิบัติการ' สีของแถบถูกกำหนดโดยใช้เมธอด scale_fill_manual() เส้นกริดและส่วนประกอบโอเวอร์เลย์ที่ไม่จำเป็นจะถูกลบออกโดยใช้เมธอด theme_minimal() เมธอด ShinyApp(ui, เซิร์ฟเวอร์) จะสร้างแอป
ggplot ( ข้อมูล = ข้อมูล. กรอบ ( ระดับ = ชื่อ ( การนับเกรด ) , นับ = เช่น. ตัวเลข ( การนับเกรด ) ) ,ใช่ ( x = เกรดและ = นับ, เติม = ระดับ ) ) +
geom_bar ( สถิติ = 'ตัวตน' ) +
ห้องปฏิบัติการ ( ชื่อ = “การแบ่งเกรด” ,
x = 'ระดับ' ,
และ = 'นับ' ) +
scale_fill_manual ( ค่านิยม = ค ( 'เอ' = 'สีเขียว' , 'บี' = 'สีม่วง' , 'ค' = 'สีชมพู' ,
'ด' = 'ส้ม' , 'ฟ' = 'สีแดง' ) ) +
theme_minimal ( )
}
} )
}
แอพมันเงา ( UI, เซิร์ฟเวอร์ )
เมื่อเรียกใช้โค้ดนี้ เรามีอินเทอร์เฟซแบบโต้ตอบซึ่งเราได้เพิ่มเครื่องหมายและคลิกที่ปุ่ม 'มาคำนวณเกรดกันเถอะ'
ตารางที่มีคะแนนและเกรดของนักเรียนจะปรากฏขึ้น ตามด้วยกราฟแท่งของการแจกแจงเกรดในสีต่างๆ
บทสรุป
คู่มือนี้จะอธิบายความสำคัญของการใช้แพ็คเกจ Shiny ในภาษา R ผ่าน RStudio เพื่อเสริมคำอธิบายของเรา เราได้สร้างเว็บแอปพลิเคชันเชิงโต้ตอบสำหรับระบบการให้เกรดของนักเรียนในโค้ด R โดยใช้แพ็คเกจ 'Shiny'