by_row
とrowwise
の違いは誰にも分かりますか?私は3つのシンプルなウェブサイトを掻き集めようとしています。どちらのアプローチでも働くことができないので、私がちょうど使用しているかわかりません。purr
/dplyr
が間違っています。by_rowと行ごとの繰り返し
データ:
dplyr approach:
table %>%
rowwise() %>%
read_html() %>%
extract2(2) %>%
html_nodes("#_brand4 span") %>%
html_text()
ゴロゴロアプローチ:すべてのURL(または列)の場合
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")
、私は次の関数を使用してWebページをこすりしたい
#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配管を使用して
は、私は私のcode.Soでタイムアウトエラーを取得しておいてください。
私のDF内のすべての要素を反復処理するためにゴロゴロ/ dplyrを使用しているとき、私はタイムアウトエラーを回避するにはどうすればよいですか?もしそうなら、私は
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)%>%...' –
私はたくさんのリンクを持っていて、私は時間切れのエラーを取得し続けます。更新されたコードをご覧ください。 – petergensler
'' purrr :: safeely''と '' purrr :: transpose''を見てください。 –