Цикл TryCatch в RCurl, XML и readHTMLTable

Я пытаюсь получить все результаты международного футбола Англии и поместить их во фрейм данных в R. На отличном веб-сайте www.11v11.com есть все необходимые мне результаты, однако я столкнулся с проблемой в те годы, когда нет записанные результаты - и, следовательно, никаких html-таблиц. Вот мой код:

resultloop<-function(team,startyear,endyear){

library(RCurl)
library(XML)

x<-vector(mode = "list", length = endyear)

for(k in seq(endyear,startyear))

{
  theurl<-paste("http://www.11v11.com/teams/",team,"/tab/matches/season/",k,sep="")
  tables<-readHTMLTable(theurl)
  n.rows <- unlist(lapply(tables, function(t) dim(t)[1]))
  newtable<-tables[[which.max(n.rows)]]

  x[[k]]<-newtable  
  x=x[-(which(sapply(x,is.null),arr.ind=TRUE))]

  y<-do.call("rbind",x)

 }

return(y)


}

Если бы я побежал

resultloop("england",1996,2013)

например, кадр данных выглядит красиво и стильно, однако, если я запустил

resultloop("england",1944,1945)

я получаю ошибку

Error in tables[[which.max(n.rows)]] : 
attempt to select less than one element

Что я хочу сделать, так это использовать функцию iferror, чтобы пропустить определенный год, если таблицы нет, и продолжить цикл. Я посмотрел на tryCatch, но изо всех сил пытаюсь понять это - может ли кто-нибудь помочь мне, пожалуйста?


person clattenburg cake    schedule 30.12.2013    source источник
comment
Вот пример того, что вы ищете: цикл с readHTMLTable, который использует обработку ошибок для пропуска пустых результатов.   -  person Ben    schedule 31.12.2013