R 在 warning/error 上执行表达式
R execude expression on warning/error
我处理大量数据集,因此我的 R 程序运行了几个小时。有时会发生一些错误,程序中止并显示一些 warning/error 消息。大多数时候,这不是我自己编写的警告消息,因为我考虑过可能会出错的地方——这是一些意外的事情,导致我调用的某些基本 R 函数出现警告或错误。对于我自己编写的警告消息,我可以使用 warning
的 expr
参数。有没有类似全局选项的东西?
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)
,它会在发出警告时发出哔声。
我处理大量数据集,因此我的 R 程序运行了几个小时。有时会发生一些错误,程序中止并显示一些 warning/error 消息。大多数时候,这不是我自己编写的警告消息,因为我考虑过可能会出错的地方——这是一些意外的事情,导致我调用的某些基本 R 函数出现警告或错误。对于我自己编写的警告消息,我可以使用 warning
的 expr
参数。有没有类似全局选项的东西?
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)
,它会在发出警告时发出哔声。