如何在R中创建向量或表列表

Dat*_*cer 4 r web-scraping

我正试图从网站上刮掉一堆表.我希望能够将它们全部存储在一个或多个变量中 - 基本上是为了方便访问.下面的代码是我到目前为止,我正在使用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)

任何帮助,将不胜感激.

flo*_*del 7

您的表是长度> 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)

你可以看到,它也更简洁.