R Apply功能列出并创建新的数据帧

时间:2014-11-17 15:03:52

标签: r plyr rbind

我想从所有页面上位于同一位置的多个网页检索数据,并将其全部放在一个数据框中。

我有以下代码尝试:

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)

这会将所有数据放在多个列中(每个网页有两列),但我希望两列(参与者,国家/地区)中的所有数据在一个数据框中有一个数据框,而不是很多列。

我在网站上找不到类似这样的问题,但我愿意关注链接。提前谢谢。

1 个答案:

答案 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)