正如@RuiBarradas在评论中提到的,
tryCatch
是我们在R中处理错误(甚至警告)的方式。特别是在您的情况下,您需要的是在出现错误时进行下一次迭代,因此您可以这样做:
for (url_var in url.list) {
url <- url_var
url.parsed <- htmlParse(getURL(url), asText = TRUE)
tryCatch({
# Try to run the code within these braces
tableNodes <- getNodeSet(url.parsed, '//*[@id="table"]/table')
newdata <- readHTMLTable(tableNodes[[1]], header=F, stringsAsFactors=F)
big.data <- rbind(newdata, big.data)
},
# If there are errors, go to next iteration
# Sys.sleep(30) won't be executed in such case
error = next())
Sys.sleep(30)
}
是的,
Sys.sleep(30)
执行时使R休眠30秒。因此,如果您希望R在每次迭代中总是休眠,无论解析是否成功,您可以考虑将该行移到
tryCatch公司
。
请参阅
How to write trycatch in R
更详细地阐述
tryCatch公司
。