เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ทำทุกอย่างในการเรียกครั้งเดียว

เพื่อให้โค้ดนี้นำกลับมาใช้ซ้ำได้ง่ายยิ่งขึ้น เราจะสร้างฟังก์ชันที่ทำทุกอย่างในการเรียกครั้งเดียว โครงสร้างของฟังก์ชันเตรียมไว้ให้แล้ว ถึงตาที่จะเติมให้สมบูรณ์!

ในแบบฝึกหัดก่อนหน้า เราเขียนกระบวนการไว้หลายขั้นตอน คราวนี้เราต้องการให้ทำได้ในการเรียกครั้งเดียว โดยเขียนฟังก์ชันที่รับ list ของ URL แล้วคืนค่าชื่อของ element ที่เข้าถึงไม่ได้

เมื่อเขียนฟังก์ชันนี้เสร็จแล้ว สามารถบันทึกและนำกลับมาใช้ได้ทุกครั้งที่ต้องการล้าง list ของ URL และอาจนำใส่ package ด้วยก็ได้ ;)

list urls จากแบบฝึกหัดก่อนหน้าพร้อมใช้งานใน workspace แล้ว

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Functional Programming ระดับกลางด้วย purrr

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้างเวอร์ชัน possibly() ของ read_lines() ภายใน map() โดยให้คืนค่า 404 เมื่อเกิดข้อผิดพลาด

  • กำหนดชื่อให้กับ output

  • ใช้ฟังก์ชัน paste() โดยตั้งค่า argument collapse เป็น " " เพื่อแปลง 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)
แก้ไขและรันโค้ด