read_lines() 的 possibly() 版本
我們持續使用先前提供、用來擷取的那組 URL。現在要嘗試幾種方法來找出無法存取的 URL。為什麼要這麼做?因為網頁擷取的第一步,就是先判斷 URL 是否可存取。這正是我們現在撰寫的程式碼將派上用場的地方。
在上一個練習中,我們把 read_lines() 函式包在 safely() 裡。這一題改用 possibly() 函式。
在網頁術語中,404 代表該網頁不存在或無法取得。這個數字會用在 otherwise 參數上。
另外,因為 read_lines() 讀取網頁時會回傳長度為 n 的向量,我們會用 paste() 函式把它們合併(collapse)。
已為你提供 urls 向量。
本練習屬於課程
使用 purrr 的 R 語言中級函式程式設計
練習說明
將
read_lines()函式包在possibly()呼叫中,並在 otherwise 的情況回傳 404。將這個新建立的函式映射到 URL 清單上,並直接 pipe 進
set_names()。使用
paste(),把清單中的每個元素轉成長度為 1 的字元向量,collapse參數設為" "。只保留等於 404 的元素。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Create a possibly() version of read_lines()
possible_read <- ___(___, otherwise = ___)
# Map this function on urls, pipe it into set_names()
res <- map(urls, ___) %>% ___(urls)
# Paste each element of the list
res_pasted <- ___(res, ___, collapse = ___)
# Keep only the elements which are equal to 404
___(res_pasted, ___)