2013-01-01 4 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

for 루프의 vectorOfTables에 대해 [i] 대신 [1]을 사용했습니다. – 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

루프를 사용하지 않고도 이것을 작성하는 더 깨끗한 방법이 있다는 것을 알고있었습니다. 나는 R을 사랑해! 도와 주셔서 감사합니다 :) – DataDancer

+1

R에 루프를 작성하면 너무 열심히 노력하고 있습니다. R은리스트 작업을위한 정교한 기능 (lisp 같은)을 가지고 있습니다. –