Я пытаюсь получить все результаты международного футбола Англии и поместить их во фрейм данных в 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, но изо всех сил пытаюсь понять это - может ли кто-нибудь помочь мне, пожалуйста?
readHTMLTable
, который использует обработку ошибок для пропуска пустых результатов. - person Ben   schedule 31.12.2013