ปรับปรุงฟังก์ชันให้สมบูรณ์แบบ
เรายังคงพัฒนาฟังก์ชันสำหรับตรวจสอบว่า URL ในลิสต์มีรายการที่เข้าถึงไม่ได้หรือไม่
มาทบทวนสิ่งที่เขียนไปแล้ว:
- ตัวดึงข้อผิดพลาด โดยใช้
safely()ร่วมกับmap(.x, "error") - ตัวดึงค่าที่ไม่ใช่ null โดยใช้
safely()ร่วมกับdiscard(.x, is.null) - ตัวสร้างรหัส 404 โดยใช้
possibly(.x, otherwise = 404)ซึ่งถูกแปลงเป็นฟังก์ชัน
คราวนี้จะปรับพฤติกรรมของฟังก์ชันเล็กน้อย: ต้องการให้เลือกได้ว่าจะให้ฟังก์ชันคืนค่าผลลัพธ์หรือข้อผิดพลาด
สิ่งนี้จะช่วยให้ตอบคำถามได้สองข้อด้วยฟังก์ชันเดียว: URL ใดบ้างที่เข้าถึงไม่ได้ และ URL ใดบ้างที่เข้าถึงได้? โดยจะเพิ่มพารามิเตอร์ชื่อ "type" เข้าไปในฟังก์ชันนี้
เวกเตอร์ urls และฟังก์ชัน safe_read() พร้อมใช้งานใน workspace แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Functional Programming ระดับกลางด้วย purrr
คำแนะนำการฝึกหัด
เติมโค้ดในนิยามฟังก์ชันให้ครบถ้วน
- Map
safe_read()กับลิสต์ของ URL - กำหนดชื่อให้กับผลลัพธ์โดยใช้ลิสต์ของ URL
- Transpose ผลลัพธ์ให้เป็นลิสต์ที่มี $result และ $error
- ใช้
pluck()เพื่อดึงส่วนประกอบtypeออกมา
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Complete the function definition
url_tester <- function(url_list, type = c("result", "error")) {
type <- match.arg(type)
url_list %>%
# Apply safe_read to each URL
___(___) %>%
# Set the names to the URLs
___(___) %>%
# Transpose into a list of $result and $error
___() %>%
# Pluck the type element
___(___)
}
# Try this function on the urls object
url_tester(urls, type = "error")