【问题标题】:R - Rstudio - make R play a sound if warning/error generatedR - Rstudio - 如果产生警告/错误,让 R 播放声音
【发布时间】:2015-08-19 19:58:07
【问题描述】:

我正在运行一个循环遍历股票对组合列表的脚本...有时脚本会由于对组合之间的不同数据长度产生的错误而停止运行,我只是将不匹配的股票从考虑中删除):

Error in model.frame.default(formula = stckY ~ stckX + 0, drop.unused.levels = TRUE) : 
  variable lengths differ (found for 'stckX')

有什么方法可以让 R / Rstudio 在出现错误消息时播放声音,以便在脚本循环播放时无需注视屏幕就可以收到警报?

我可以使用以下方法线性生成声音:

beep <- function(n = 3){
    for(i in seq(n)){
        system("rundll32 user32.dll,MessageBeep -1")
        Sys.sleep(.5)
    }
}
beep()

但是如果出现错误消息,我该如何做呢?

【问题讨论】:

标签: r rstudio


【解决方案1】:

基于@frankc 答案和@hrbrmstr 评论,一种方法:

install.packages("beepr")
library(beepr)
options(error = beep)

【讨论】:

    【解决方案2】:

    尝试选项(错误 = 哔声)

    您仍然需要在执行此操作之前定义哔声。尚未验证此方法是否有效,但应该根据 ?options:

    'error':控制处理的函数或表达式
              非灾难性错误,例如由“停止”产生的错误
              以及通过信号和内部检测到的错误。如果
              option 是一个函数,对该函数的调用,没有
              arguments,作为表达式生成。默认值
              为“NULL”:在这种情况下,请参见“停止”。这
              函数“dump.frames”和“recover”提供了替代方案
              允许事后调试。注意这些需要
              指定为例如'选项(错误 = utils::recover)' 在
              启动文件,例如“.Rprofile”。
    

    【讨论】:

    • 感谢您的建议,我会在以后尝试,但现在我通过使用 tryCatch() 完全跳过错误找到了一个更大的解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多