4

私はウェブサイトからたくさんのテーブルをこすり取ろうとしています。基本的に簡単にアクセスできるように、それらすべてを1つ以上の変数に格納できるようにしたいと思います。以下のコードは私がこれまでに持っているものです。私は、単一のテーブルでうまく機能することがわかった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 に答える