safely() แทนที่ด้วย NA
เมื่อใช้ map() กับลิสต์ แล้วมีองค์ประกอบบางตัวที่ไม่ใช่ประเภทข้อมูลที่ถูกต้อง ผลลัพธ์ที่ได้อาจไม่เป็นไปตามที่คาดไว้ ตัวอย่างเช่น หากต้องการทำการคำนวณทางคณิตศาสตร์กับแต่ละองค์ประกอบ แต่กลับพบว่ามีบางตัวเป็น character โค้ดก็จะทำงานไม่ได้
หากลิสต์มีขนาดใหญ่มาก การตามหาว่าปัญหาเกิดขึ้นที่ไหนและเกิดอะไรขึ้นกันแน่อาจเป็นเรื่องยาก นั่นคือจุดที่ safely() เข้ามาช่วย โดยจะแสดงทั้งผลลัพธ์และตำแหน่งที่เกิด error จากการเรียก map() ของคุณ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Foundations of Functional Programming with purrr
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Map safely over log
a <- list(1, "I can", 10, 0, "purrr") %>%
map(___(___, otherwise = NA_real_)) %>%
# Transpose the result
transpose()