การคืนค่า metadata
บางครั้งอาจต้องการคืนค่าหลายอย่างจากฟังก์ชัน แต่ต้องการให้ผลลัพธ์มี class เฉพาะเจาะจง (เช่น data frame หรือ numeric vector) ทำให้การคืนค่าเป็น list ไม่เหมาะสม กรณีนี้มักเกิดขึ้นเมื่อมีผลลัพธ์หลักพร้อมกับ metadata ของผลลัพธ์นั้น (Metadata คือ "ข้อมูลเกี่ยวกับข้อมูล" ตัวอย่างเช่น อาจเป็นชื่อไฟล์ที่โหลดชุดข้อมูลมา ชื่อผู้ใช้ของผู้สร้างตัวแปร หรือจำนวนรอบที่อัลกอริทึมใช้จนกว่าจะ converge)
ในกรณีนี้ สามารถเก็บ metadata ไว้ใน attributes ได้ โดย syntax สำหรับการกำหนด attribute มีดังนี้
attr(object, "attribute_name") <- attribute_value
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Introduction to Writing Functions in R
คำแนะนำการฝึกหัด
- อัปเดต
pipeable_plot()ให้ผลลัพธ์มี attribute ชื่อ"formula"โดยมีค่าเป็นformula plt_dist_vs_speedที่สร้างไว้ก่อนหน้านี้แสดงอยู่แล้ว ตรวจสอบโครงสร้างที่อัปเดตแล้วของมัน
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
pipeable_plot <- function(data, formula) {
plot(formula, data)
# Add a "formula" attribute to data
___ <- ___
invisible(data)
}
# From previous exercise
plt_dist_vs_speed <- cars %>%
pipeable_plot(dist ~ speed)
# Examine the structure of the result
___