Кто-нибудь знает, в чем разница между by_row
и rowwise
? Я пытаюсь очистить 3 простых веб-сайта, и я не могу заставить работать ни один из подходов, поэтому я не уверен, что просто неправильно использую purr
/dplyr
.
Данные:
structure(list(beer_brewerid = c("8481", "3228", "10325"), link =
c("https://www.ratebeer.com/beer/8481/", "https://www.ratebeer.com/beer/3228/", "https://www.ratebeer.com/beer/10325/" ), scrapedname = c("", "", "")), .Names = c("beer_brewerid", "link", "scrapedname"), row.names = c(NA, 3L), class = "data.frame")
Для каждого URL-адреса (или строки) я хотел бы очистить веб-страницу, используя следующую функцию:
dplyr approach:
table %>%
rowwise() %>%
read_html() %>%
extract2(2) %>%
html_nodes("#_brand4 span") %>%
html_text()
Мурлыкающий подход:
#Apply function to each row
table %>%
by_row(..f = parserows(), collate = c("rows"), .to = "scrapedname")
#Takes in row
parserows = function(){
read_html() %>%
extract2(., 2) %>%
html_nodes("#_brand4 span") %>%
html_text()
}
В подходе purr
я продолжаю получать сообщение об ошибке, когда x отсутствует без значения по умолчанию. Разве значение не должно исходить из номера строки? В противном случае я бы написал цикл for, указывающий, в каком индексе находится номер строки.
Используя этот трубопровод magrittr, я продолжаю получать ошибки тайм-аута с моим кодом. Итак:
Как избежать ошибок тайм-аута при использовании purr/dplyr для перебора всех элементов в моем df? Если да, следует ли мне использовать
trycatch
или какой-либо механизм обработки ошибок для фиксации ошибок при их возникновении?Действительно ли rowwise/by_row предназначен для этой задачи? Я думаю, что эти функции предназначены для итерации по каждому элементу в строке, что не совсем то, что я пытаюсь решить с этой проблемой. Спасибо.
output = table$link %>% extract() %>% map(read_html) %>% html_nodes(row,"#_brand4 span") %>% html_text(row)
my_dat$link %>% map(read_html) %>% ...
- person Thomas K   schedule 05.04.2017purrr::safely
иpurrr::transpose
. - person Thomas K   schedule 05.04.2017