4

我正在尝试从网站上抓取一堆表格。我希望能够将它们全部存储在一个或多个变量中——基本上是为了方便访问。下面的代码是我到目前为止所拥有的,我正在使用我发现的 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
  }

任何帮助,将不胜感激。

4

1 回答 1

7

您的表格是长度> 1(并且可能长度不同)的对象,它们必须进入列表。所以你应该这样做:

vectorOfTables <- vector(mode = "list", length = N)

当您在循环内分配时,请执行以下操作:

vectorOfTables[[i]] <- Sport.table

但是,您可以避免for循环并使用以下命令创建列表lapply

SportHTML    <- paste0(DSFL1, 1:N, DSFL2)
ListOfTables <- lapply(SportHTML, readHTMLTable, header = TRUE,
                       which = 3, stringsAsFactors = FALSE)

如您所见,它也更加简洁。

于 2013-01-01T11:36:17.197 回答