R beepr 播放太早

R beepr plays way too early

鉴于有 4,000 行代码并且这可能是问题的一部分,我不确定我是否可以包含可重现的代码,但让我尽力解释我的问题:

我喜欢使用 beepr 在处理完一堆代码时播放声音。如果我的电脑需要一段时间 运行 它,我会去看看不同的屏幕或在它思考时在房间里做其他事情。

我有一个很大的 .rmd 文件。它有 4187 行长,beep() 在第 4185 行。我使用 ctrl+f 确保它不在文档中的其他地方。当我“运行 全部”时,当我读完文档到这里时哔哔声响起:

然后它会在完成之前继续思考几分钟。这违背了 beepr().

的全部目的

所以我想我的问题是:这是一个已知问题吗?执行此操作的 .rmd 文档有什么特别之处吗?任何已知的修复?

{knitr} 手册页说:

This function takes an input file, extracts the R code in it according to a list of patterns, evaluates the code and writes the output in another file.

所以您观察到的事情是因为 .rmd 中的所有 R 代码在整个过程完成之前都得到了评估。执行 beepr 行时会播放声音,因为这会在 pandoc(或类似文件)处理文档之前发生(rcode 块)我只建议您将蜂鸣器放在 .rmd 本身之外以在处理后触发它完成的。写一个 3 行 r sript:

knit("my.rmd")
Sys.sleep(1)
beepr() 

这确保了蜂鸣声只会在文档创建后开始(Sys.sleep 只是为了确保和概率。没有必要)