我正在努力获取英格兰的所有国际足球赛成绩并将其放入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,但我很难理解它 - 有人可以帮帮我吗?