【发布时间】:2017-02-01 09:01:46
【问题描述】:
以下代码有效:
library(rvest)
library(plyr)
alaska <- c(1:49)
for (i in alaska) {
url <- "http://www.50states.com/facts/alaska.htm"
nodespath <- paste('//*[@id="content"]/div[1]/div[4]/ol/li[',i,']')
alaskafacts <- data.frame(facts = url %>% html() %>%
html_nodes(xpath =nodespath) %>% html_text())
alaskafacts$nm <- i
alaskafacts$facts <- alaskafacts$facts
result <- rbind.fill(result,alaskafacts)
}
我会得到这个结果:
我知道循环正在工作,因为如果我将代码更改为:
alaska <- c(1:48)
我会得到这个结果:
我遇到的问题是循环自己重写。我期待 49 行事实——我猜循环会删除前一个事实,然后编写一个新事实——最后一个事实将始终是 data.frame 中的事实。
我在这里找到了一个示例:How can I use a loop to scrape website data for multiple webpages in R?,上面发布的代码遵循示例中的代码。然后我引用了这个例子:here。我认为上面的代码也遵循它。
我在底部的 rbind 调用遵循我在 SO 上找到的两个类似示例,但没有按预期保存。
有什么建议吗?
【问题讨论】: