RCurl,XML和readHTMLTable中的TryCatch循环

时间:2013-12-30 22:32:53

标签: xml r try-catch rcurl

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

0 个答案:

没有答案