ทำทุกอย่างในการเรียกครั้งเดียว
เพื่อให้โค้ดนี้นำกลับมาใช้ซ้ำได้ง่ายยิ่งขึ้น เราจะสร้างฟังก์ชันที่ทำทุกอย่างในการเรียกครั้งเดียว โครงสร้างของฟังก์ชันเตรียมไว้ให้แล้ว ถึงตาที่จะเติมให้สมบูรณ์!
ในแบบฝึกหัดก่อนหน้า เราเขียนกระบวนการไว้หลายขั้นตอน คราวนี้เราต้องการให้ทำได้ในการเรียกครั้งเดียว โดยเขียนฟังก์ชันที่รับ list ของ URL แล้วคืนค่าชื่อของ element ที่เข้าถึงไม่ได้
เมื่อเขียนฟังก์ชันนี้เสร็จแล้ว สามารถบันทึกและนำกลับมาใช้ได้ทุกครั้งที่ต้องการล้าง list ของ URL และอาจนำใส่ package ด้วยก็ได้ ;)
list urls จากแบบฝึกหัดก่อนหน้าพร้อมใช้งานใน workspace แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Functional Programming ระดับกลางด้วย purrr
คำแนะนำการฝึกหัด
สร้างเวอร์ชัน
possibly()ของread_lines()ภายในmap()โดยให้คืนค่า404เมื่อเกิดข้อผิดพลาดกำหนดชื่อให้กับ output
ใช้ฟังก์ชัน
paste()โดยตั้งค่า argumentcollapseเป็น" "เพื่อแปลง sublist แต่ละรายการให้เป็น character vectorลบ element ที่มีค่าเท่ากับ 404 ออก
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
url_tester <- function(url_list){
url_list %>%
# Map a version of read_lines() that otherwise returns 404
map( ___(___, otherwise = ___) ) %>%
# Set the names of the result
___( urls ) %>%
# paste() and collapse each element
map(___, ___ = " ") %>%
# Remove the 404
___(___) %>%
names() # Will return the names of the good ones
}
# Try this function on the urls object
url_tester(urls)