R: For循环跳过如果错误/ tryCatch



我有一个1000行的数据框。我想循环遍历的代码非常简单——我只想让第4列中的所有值都大写。我希望它是这样的,如果在任何一行中有错误,我希望它跳过那一行并继续到其余的行。

我写了这样的代码:

for(i in 1:1000)
{
  tryCatch(toupper(Total_Data_2[i,4]), error = function(e) next)
}

然而,我得到错误:Error in value[[3L]](cond) : no loop for break/next, jumping to top level

有人能帮我一下吗?我可以使用tryCatch或者if iserror。

提前感谢!!

虽然我不认为这一定是最好的解决方案,但它确实直接回答了您的问题(简化为可重复性):

for(i in 1:10) {
  res <- try(if(i %% 2) stop("argh"))
  if(inherits(res, "try-error")) next
  cat(i, "n")
}

只是使用try代替tryCatch b/c,这有点简单,tryCatch功能是不需要的。对于你的目的,你可以:

for(i in 1:10) try(my_val[i] <- my_fun(my_val[i]))

因为你不需要做任何其他事情。如果失败,循环将继续顺利进行。

说了这么多,我不得不说我对你的错误和无法用矢量化的方式做这件事有点困惑

相关内容

最新更新