如何在循环中重试我的值?
我正在解析html并且每隔一段时间,当我尝试绑定来自另一个数据帧的行时,解析将不会抓取整个表,导致代码中的错误。我有另一个变量,它具有我可以检查的实际行数。
我的想法是
for(thisURL in URLs){
for (l in 1:10) {
b <- htmlParse(thisURL)
tableNode <- xpathSApply(batting, '//*[@id="logs"]')[[1]]
data <- readHTMLTable(tableNode, stringsAsFactors = FALSE)
gid <- xpathSApply(b, '//*[contains(@id, "logs.")]/td[12]/span/@id')
if length(data[[1]]) == length(gid) then exit this loop continue with the original loop else retry the htmlParse
}
remainder of first for loop
}
我是R的新人,如果长度相等,我不知道如何退出循环。我很确定如果我使用next,它将转到1:10循环中的下一个值,而不是第一个循环。如果有更好的方法,请提出建议。谢谢你的帮助!!
答案 0 :(得分:0)
我无法分辨索引l
在1:10循环中的作用。看起来你想要一个while
语句。这样的事可能吗?
for(thisURL in URLs){
# These assignments get the while loop started
data <- NULL
gid <- NA
# Number of retries and initial l
l.max <- 10
l <- 0
# This will run as long as the lengths are unequal for at most l.max times
while (length(data[[1]]) != length(gid) & l < l.max) {
l <- l+1
tableNode <- xpathSApply(batting, '//*[@id="logs"]')[[1]]
data <- readHTMLTable(tableNode, stringsAsFactors = FALSE)
gid <- xpathSApply(b, '//*[contains(@id, "logs.")]/td[12]/span/@id')
}
remainder of first for loop
}