sapply() vs. lapply()
lapply() มีประโยชน์มาก แต่บางครั้งอาจต้องการให้ข้อมูลที่ได้กลับมาอยู่ในรูปแบบที่เรียบร้อยกว่า list ตัวอย่างเช่น สำหรับ sharpe ratio จะดีกว่าไหมถ้าผลลัพธ์ที่ได้เป็น vector แทนที่จะเป็น list? การวิเคราะห์ต่อจากนั้นก็จะทำได้ง่ายขึ้นมาก!
สำหรับกรณีนี้ ลองพิจารณาใช้ sapply() หรือ simplify apply ซึ่งทำงานเหมือน lapply() ทุกประการ แต่จะพยายามทำให้ผลลัพธ์เรียบง่ายขึ้นหากทำได้ ไวยากรณ์พื้นฐานเหมือนกัน โดยมีอาร์กิวเมนต์เพิ่มเติมดังนี้:
sapply(X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)
อาร์กิวเมนต์เพิ่มเติมเหล่านี้ให้ระบุได้ว่าต้องการให้ sapply() พยายามทำให้ผลลัพธ์เรียบง่ายขึ้นหรือไม่ และต้องการให้ใช้ชื่อของออบเจกต์ในผลลัพธ์หรือเปล่า
ในแบบฝึกหัดนี้ จะได้คำนวณ sharpe ratio อีกครั้งโดยใช้ sapply() เพื่อทำให้ผลลัพธ์เรียบง่ายขึ้น โดยมี stock_return และฟังก์ชัน sharpe เตรียมไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
R ระดับกลางสำหรับการเงิน
คำแนะนำการฝึกหัด
- ใช้
lapply()กับstock_returnเพื่อคำนวณ sharpe ratio อีกครั้ง - จากนั้นใช้
sapply()กับstock_returnเพื่อดูผลลัพธ์ sharpe ratio ที่ถูกทำให้เรียบง่ายขึ้น - ใช้
sapply()กับstock_returnเพื่อคำนวณ sharpe ratio โดยระบุอาร์กิวเมนต์simplify = FALSEและUSE.NAMES = FALSEซึ่งให้ผลเหมือนกับการใช้lapply()เลย!
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# lapply() on stock_return
___
# sapply() on stock_return
___
# sapply() on stock_return with optional arguments
___