R在警告/错误时执行表达式

时间:2015-02-11 11:30:25

标签: r warnings

我处理大量数据集,因此我的R程序运行了几个小时。有时它会发生错误,程序会因某些警告/错误消息而中止。大多数情况下,这不是我自己编程的警告信息,因为我想到了什么可能出错 - 这是一些意外的事情,导致我调用的某个基本R函数出现警告或错误。对于我自己编程的警告消息,我可以使用expr的{​​{1}}参数。是否有类似全球选择的东西?

R(我在Win 8上使用Rstudio)只在后台运行,因为我还有其他工作要做。我不时地点击R以查看它是否仍在运行。 如果出现问题,我想从beepr包中发出类似warning的哔声。

当出现警告/错误时,有没有办法执行某些表达式(如此beep(sound=1))?它足以满足后者,因为beep(sound=1)可以通过options(warn=2)促进对错误的每个警告。如果R仍然执行其他表达警告的表达式,则可能很难执行某些表达式。

1 个答案:

答案 0 :(得分:3)

您可以使用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),只要它发出警告就会发出哔声。