2015-07-26 3 views
1

Я пытаюсь разобрать данные из таблиц на baseball-reference.com. Я хочу сделать это для нескольких команд и нескольких лет. Код ниже используется для захвата каждой команды сезона сезона.R: Как сохранить список в списке?

library(XML) 

#Will use for loop to fill in the rest of the link 
link_base <- "http://www.baseball-reference.com/teams/" 
#List of teams 
teams <- c("CHC", "STL") 
#Year 
season <- 2000:2002 
#End of link 
end_link <- "-schedule-scores.shtml" 

links <- list() 
for(i in 1:length(teams)){ 
    links[[i]] <- NaN*seq(length(teams)) 
    for(j in 1:length(season)){ 
    links[[i]][j] <- paste0(link_base, teams[i], "/", season[j], end_link) 
    } 
} 

Это приводит к:

> links 
[[1]] 
[1] "http://www.baseball-reference.com/teams/CHC/2000-schedule-scores.shtml" 
[2] "http://www.baseball-reference.com/teams/CHC/2001-schedule-scores.shtml" 
[3] "http://www.baseball-reference.com/teams/CHC/2002-schedule-scores.shtml" 

[[2]] 
[1] "http://www.baseball-reference.com/teams/STL/2000-schedule-scores.shtml" 
[2] "http://www.baseball-reference.com/teams/STL/2001-schedule-scores.shtml" 
[3] "http://www.baseball-reference.com/teams/STL/2002-schedule-scores.shtml" 

Теперь для каждого элемента в списке, я хотел бы использовать readHTMLTable функцию, так что я могу разобрать информацию. Я пытался делать так:

a <- list() 
for(i in 1:length(teams)){ 
    a[[i]] <- NaN*seq(length(teams)) 
    for(j in 1:length(season)){ 
    a[[i]][j] <- readHTMLTable(links[[i]][j]) 
    } 
} 

readHTMLTable возвращает список длины 6:

x <- readHTMLTable(links[[1]][1]) 
> length(x) 
[1] 6 

Я хотел бы 1-ый элемент списка а для хранения на выходе из readHTMLTable функции для " CHC ". Я бы хотел, чтобы 2-й элемент списка a сохранил вывод функции readHTMLTable для ссылок «STL». Таким образом, список a будет состоять из 2 элементов. Оба элемента будут состоять из 3 списков, состоящих из 6 элементов.

ответ

0

Я думаю, что это работает

lst <- lapply(links, function(l) lapply(l, function(x) readHTMLTable(x))) 

length(lst) 
# [1] 2 
lengths(lst) 
# [1] 3 3 

Первый подсписок должен иметь CHC, второй STL.

Смежные вопросы