แปลงค่าด้วย possibly()
สมมติว่าต้องการแปลงความสูงของตัวละครใน Star Wars จาก sw_people จากหน่วยเซนติเมตรเป็นฟุต เนื่องจากทราบอยู่แล้วว่าข้อมูลความสูงบางส่วนมีค่าที่ขาดหายไป จึงใช้ possibly() เพื่อแปลงค่าที่ขาดหายเหล่านั้นให้เป็น NA แล้วจึงนำค่าที่มีอยู่คูณด้วย 0.0328084 เพื่อแปลงจากเซนติเมตรเป็นฟุต
ลองพิมพ์ height_cm ในคอนโซลเพื่อดูข้อมูลความสูงในหน่วยเซนติเมตรก่อน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Foundations of Functional Programming with purrr
คำแนะนำการฝึกหัด
- นำออบเจกต์
height_cmต่อเข้ากับฟังก์ชันmap_*()ที่คืนค่าเป็น double vector - แปลงแต่ละองค์ประกอบใน
height_cmให้เป็นฟุต (คูณด้วย 0.0328084) - เนื่องจากไม่ใช่ทุกองค์ประกอบที่เป็นตัวเลข ให้ใช้
possibly()เพื่อแทนที่ค่าที่ไม่สามารถแปลงได้ด้วยNA_real_
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create a piped workflow that returns double vectors
___ %>%
map___(possibly(function(___){
# Convert centimeters to feet
___ * 0.0328084
}, ___))