如何在R语言for循环中捕获错误并跳转至下一次迭代?
解决try捕获错误后的迭代跳过问题
你可以通过判断data2是否为try-error类型,来决定是否执行后续的赋值和合并操作,直接进入下一次循环。修改后的代码如下:
data <- data.frame() for(i in 1:length(df$Link)){ data2 <- try(get_caption(df$Link[i]), silent = TRUE) # 检查是否捕获到错误,是的话直接进入下一次迭代 if(inherits(data2, "try-error")){ Sys.sleep(5) next } data2$videoId <- df$videoId[i] data2$channelId <- df$channelId[i] data <- rbind(data, data2) Sys.sleep(5) }
关键修改说明
- 用
inherits(data2, "try-error")检测是否捕获到错误,一旦触发就用next跳过当前循环剩余代码,直接开始下一次迭代 - 删掉了多余的
i <- i+1,for循环会自动处理i的递增,手动修改会导致跳过部分链接 - 把
Sys.sleep(5)放在了两个位置:错误时也执行休眠,避免请求频率过高被限制
内容的提问来源于stack exchange,提问作者Aman
相关产品推荐
相关产品推荐

