R 在 warning/error 上执行表达式

R execude expression on warning/error

我处理大量数据集,因此我的 R 程序运行了几个小时。有时会发生一些错误,程序中止并显示一些 warning/error 消息。大多数时候,这不是我自己编写的警告消息,因为我考虑过可能会出错的地方——这是一些意外的事情,导致我调用的某些基本 R 函数出现警告或错误。对于我自己编写的警告消息,我可以使用 warningexpr 参数。有没有类似全局选项的东西?

R(我在 Win 8 上使用 Rstudio)仅在后台 运行,因为我还有其他工作要做。我不时点击 R 看看它是否仍然是 运行。 万一出现问题,我想从 beepr 包中发出 beep(sound=1) 之类的哔声。

有什么方法可以在引发 warning/error 时执行某些表达式(例如 beep(sound=1))?它足以满足后者,因为可以通过 options(warn=2) 将每个警告提升为错误,并且如果 R 仍然执行引发警告的其他表达式,则可能很难执行某些表达式。

您可以使用 tryCatch 按以下方式执行此操作:

产生警告的示例:

x <- 1:10
y <- if (x < 5 ) 0 else 1

Warning message:
In if (x < 5) 0 else 1 :
  the condition has length > 1 and only the first element will be used

使用 tryCatch

>tryCatch(if (x < 5 ) 0 else 1, 
          warning = function(x) print(x),
          finally = print('hello'))

<simpleWarning in if (x < 5) 0 else 1: the condition has length > 1 and only the first element will be used>
[1] "hello"

在上面的代码中,我 print(hello) 添加 beep(sound=1),它会在发出警告时发出哔声。