เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

เมื่อ Simplify ไม่สำเร็จ

สำหรับการใช้งานแบบ interactive นั้น sapply() เป็นตัวเลือกที่ดี เพราะจะเดาประเภทของผลลัพธ์เองเพื่อทำการ simplify ซึ่งโดยทั่วไปก็ไม่มีปัญหา อย่างไรก็ตาม sapply() ไม่ใช่ตัวเลือกที่ปลอดภัยสำหรับการเขียนฟังก์ชัน หาก sapply() ไม่สามารถ simplify ผลลัพธ์ได้ มันจะคืนค่าเป็น list เหมือน lapply() ซึ่งอาจเป็นปัญหาและทำให้ฟังก์ชันที่เขียนขึ้นเองเกิดข้อผิดพลาดได้ หากเขียนโดยคาดหวังว่า sapply() จะคืนค่าเป็น vector ที่ถูก simplify แล้ว

มาดูแบบฝึกหัดที่ใช้ list ซึ่งบรรจุข้อมูลเกี่ยวกับวิกฤตตลาดหุ้นปี 2008 กัน

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

R ระดับกลางสำหรับการเงิน

ดูคอร์ส

คำแนะนำการฝึกหัด

list market_crash ถูกสร้างขึ้นให้แล้ว

  • ใช้ sapply() เพื่อดู class() ของแต่ละ element ใน market_crash


list ใหม่ market_crash2 ถูกสร้างขึ้นแล้ว โดยความแตกต่างอยู่ที่วิธีการสร้าง date

  • ใช้ lapply() เพื่อดู class() ของแต่ละ element ใน market_crash2
  • ใช้ sapply() เพื่อดู class() ของแต่ละ element ใน market_crash2


date ใน market_crash2 มีหลาย class ทำไม sapply() จึงไม่สามารถ simplify ได้?

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Market crash with as.Date()
market_crash <- list(dow_jones_drop = 777.68, 
                     date = as.Date("2008-09-28"))
                     
# Find the classes with sapply()
___

# Market crash with as.POSIXct()
market_crash2 <- list(dow_jones_drop = 777.68, 
                      date = as.POSIXct("2008-09-28"))

# Find the classes with lapply()
___

# Find the classes with sapply()
___
แก้ไขและรันโค้ด