Bắt đầu ngayBắt đầu miễn phí

Gói gọn trong một lần gọi

Để giúp đoạn mã này tái sử dụng tốt hơn, chúng ta sẽ viết một hàm thực hiện mọi thứ chỉ trong một lần gọi. Chúng tôi đã cung cấp khung (skeleton) của hàm này, giờ đến lượt bạn hoàn thiện nó!

Ở các bài trước, bạn đã triển khai quy trình theo nhiều bước. Bây giờ, chúng ta muốn làm gọn lại chỉ với một lần gọi: ta sẽ viết một hàm nhận vào một list các URL và trả về tên của những phần tử không truy cập được.

Sau khi viết xong hàm, bạn có thể lưu lại và dùng lại bất cứ khi nào cần làm sạch một list URL. Biết đâu sau đó còn đóng gói vào một package ;)

List urls từ bài tập trước đã có sẵn trong workspace của bạn.

Bài tập này là một phần của khóa học

Lập trình hàm nâng cao với purrr

Xem khóa học

Hướng dẫn bài tập

  • Tạo, ngay trong lời gọi map(), một phiên bản possibly() của read_lines() mà nếu lỗi thì sẽ trả về 404.

  • Đặt tên cho đầu ra.

  • Dùng hàm paste() với đối số collapse đặt là " " để biến mỗi sublist thành một vector ký tự.

  • Loại bỏ các phần tử có giá trị bằng 404.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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)
Chỉnh sửa và Chạy Mã