如果当前错误,则在R中直接转到for循环的下一个迭代

时间:2019-05-16 06:38:24

标签: r

我正在 $ R $ 中运行 $ for $ 循环。大约有一百万次迭代。碰巧某些迭代会导致错误。对于不同的迭代,误差可能不同。问题是:如果其中有错误,如何跳过迭代而不检查特定条件(通常这样做是为了退出for循环)....即这里退出当前迭代的条件是该迭代有错误。 我只想跳过错误的迭代,然后跳过下一个迭代。

类似:

if error:
  output = 0
  skip to next iteration

1 个答案:

答案 0 :(得分:0)

您可能正在寻找trytryCatch。例如,将值平方在简单的整数和字符列表中:

vec <- list(1, 2, 3, "c", 4, 5, 6)

使用try仅在遇到错误时继续:


for (x in vec) {
    try(print(x^2), silent = T)
}

# [1] 1
# [1] 4
# [1] 9
# [1] 16
# [1] 25
# [1] 36

使用tryCatch来执行类似打印特定消息之类的操作:

for (x in vec) {
    tryCatch(print(x^2),
             error = function(cond) message(paste(x, "is not a number"))
             )
}

# [1] 1
# [1] 4
# [1] 9
# c is not a number
# [1] 16
# [1] 25
# [1] 36