作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 1000 行的数据框。我想要循环的代码非常简单 - 我只想将第 4 列中的所有值设为大写。我希望它能够在任何行中出现错误时跳过该行并继续执行其余行。
我写了这段代码:
for(i in 1:1000)
{
tryCatch(toupper(Total_Data_2[i,4]), error = function(e) next)
}
但是,我收到错误:值[[3L]](cond)中的错误:没有循环用于中断/下一个,跳转到顶层
有人可以帮我解决这个问题吗?我可以执行 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]))
因为您不需要做任何其他事情。如果失败,循环将继续愉快地进行。
尽管如此,我不得不说我对您的错误以及无法以矢量化方式执行此操作感到有点困惑。
关于R:For循环如果错误则跳过/tryCatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30671246/
我是一名优秀的程序员,十分优秀!