我想从所有页面上位于同一位置的多个网页检索数据,并将其全部放在一个数据框中。
我有以下代码尝试:
library(XML)
library(plyr)
**##the urls**
raceyears<-list(url2013,url2012,url2011)
**##function that is not producing what I want**
raceyearfunction<-function(x){
page<-readLines(x)
stats<-page[10:19]
y<-read.table(textConnection(stats))
run<-data.frame(y$V1,y$V2)
colnames(run)<-c("Country","Participants")
rbind.fill(run)
}
data<-llply(raceyears,raceyearfunction)
这会将所有数据放在多个列中(每个网页有两列),但我希望两列(参与者,国家/地区)中的所有数据在一个数据框中有一个数据框,而不是很多列。
我在网站上找不到类似这样的问题,但我愿意关注链接。提前谢谢。
答案 0 :(得分:0)
您需要在raceyearfunction之外使用rbindlist。如果没有return(run)
,请rbind.fill(run)
。
您可以使用ldply,然后它将返回绑定的data.frame。
library(XML)
library(plyr)
raceyears <- list(url2013,url2012,url2011)
raceyearfunction<-function(x)
{
page <- readLines(x)
stats <- page[10:19]
y <- read.table(textConnection(stats))
run <- data.frame(y$V1,y$V2)
colnames(run) <- c("Country","Participants")
return(run)
}
data<-ldply(raceyears, raceyearfunction)