2013-01-01 92 views
3

我試圖從一個網站刮一堆表。我希望能夠將它們全部存儲在一個或多個變量中 - 基本上便於訪問。 下面的代碼是我到目前爲止所使用的XML包,我發現它可以在單個表上很好地工作,但無法使它適用於多個表。如何在R中創建向量或表的列表

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 
    } 

任何幫助,將不勝感激。

+1

你有一個[1],而不是[for] vectorOfTables for for循環 – user1609452

回答

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) 

,你可以看到它也更簡潔。

+0

我知道有一個更清潔的方式來寫這個,而不必使用循環。我的愛人!感謝你的幫助:) – DataDancer

+1

如果你在R中編寫一個循環,你就太努力了。 R有複雜的工具(lisp like),用於處理列表,這意味着你不應該循環... :) –