一次呼叫全搞定
為了讓這段程式碼更容易重現,我們要建立一個一次呼叫就能完成的函式。我們已經為你提供了這個函式的骨架,現在輪到你把它補完整!
在前面的練習中,我們把流程拆成好幾個步驟。現在希望只用一次呼叫就完成:我們會寫一個函式,接受一個 URL 的清單,並回傳無法連線之元素的名稱。
寫好這個函式之後,你可以把它存起來,日後只要需要清理 URL 清單就能重複使用。也許之後還能放進一個套件裡 ;)
先前練習中的 urls 清單已經放在你的工作空間。
本練習屬於課程
使用 purrr 的 R 語言中級函式程式設計
練習說明
在
map()呼叫中,建立read_lines()的possibly()版本,若發生錯誤則回傳404。設定輸出的名稱。
使用
paste()並將collapse參數設為" ",把每個子清單轉成字元向量。移除等於 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)