สร้างฟังก์ชัน
ในแบบฝึกหัดก่อนหน้า เราได้เห็นวิธีใช้ safely() เพื่อตรวจสอบ URL ที่เข้าถึงไม่ได้ โดยเขียนกระบวนการเล็ก ๆ ที่เรียกใช้ read_lines() เวอร์ชัน safe แล้วคืนค่าเป็นลิสต์ของ $errors
ในแบบฝึกหัดนี้ เราจะลองใช้แนวทางอื่น โดยไม่ได้มุ่งเน้นที่ข้อผิดพลาดเพียงอย่างเดียว แทนที่จะ map ฟังก์ชัน safe แล้วดึงส่วน "error" จากผลลัพธ์ เราจะเขียน helper function ที่ discard() ค่า NULL ออกจากผลลัพธ์ของ safe_read() ได้ทันที
ด้วยวิธีนี้ แทนที่จะต้องดึงส่วน $error หรือ $result ออกมาเอง เราจะสามารถรู้ได้เลยว่า element ใดเข้าถึงได้ (เนื้อหาจะถูกส่งคืนใน $results) หรือเข้าถึงไม่ได้ (จะได้รับข้อผิดพลาดใน $error แทน)
เวกเตอร์ urls ได้เตรียมไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Functional Programming ระดับกลางด้วย purrr
คำแนะนำการฝึกหัด
สร้าง
read_lines()เวอร์ชัน safeสร้างฟังก์ชันชื่อ
safe_read_discard()ที่จะรันread_lines()เวอร์ชัน safe แล้วdiscard()ค่าNULLออกMap ฟังก์ชันนี้บนลิสต์ URL ที่เตรียมไว้ให้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create a safe version of read_lines()
safe_read <- ___
# Code a function that discard() the NULL from safe_read()
safe_read_discard <- function(url){
___(___) %>%
___(is.null)
}
# Map this function on the url list
res <- ___(urls, ___)