我正试图从网站上刮掉一堆表.我希望能够将它们全部存储在一个或多个变量中 - 基本上是为了方便访问.下面的代码是我到目前为止,我正在使用XML包,我发现它在单个表上运行良好但不能让它适用于多个表.
i <- 1
N <- 3
DSFL1<- 'http://website/results/2012_aussies_thu/results/'
DSFL2 <- '.html'
SportHTML <- vector(length=N)
vectorOfTables <- vector(length=N)
for ( i in i:N) {
DSVL <- i
SportHTML[i] <- paste(DSFL1,DSVL,DSFL2, sep="")
Sport.table <- readHTMLTable(SportHTML[i], header=T, which=3,stringsAsFactors=F)
vectorOfTables[1] <- Sport.table
i <- i + 1
}
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
您的表是长度> 1(可能长度不同)的对象,它们必须进入列表.所以你应该这样做:
vectorOfTables <- vector(mode = "list", length = N)
Run Code Online (Sandbox Code Playgroud)
当你在循环中分配时,执行:
vectorOfTables[[i]] <- Sport.table
Run Code Online (Sandbox Code Playgroud)
但是,您可以使用以下命令避免for循环并创建列表lapply:
SportHTML <- paste0(DSFL1, 1:N, DSFL2)
ListOfTables <- lapply(SportHTML, readHTMLTable, header = TRUE,
which = 3, stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)
你可以看到,它也更简洁.