我正在尝试使用 rmarkdown::render() 从 R 脚本生成报告。如果我的脚本中有错误,我希望脚本停止,并且我希望呈现到那时为止的报告,包括错误。到目前为止,我有这个:
脚本 1
rmarkdown::render("Script 2")
脚本 2
#+ include = TRUE
knitr::opts_chunk$set(error = TRUE)
knitr::knit_hooks$set(error = function(x, ...) {
knit_exit(); x
})
#+
stop("this is an error!")
message("this message shouldn't be displayed")
stop("second error")
如您所见,脚本生成了包含所有错误的报告,但我想让它做的是在遇到第一个错误时停止执行脚本,然后生成包含该错误的 html 日志。在我的示例中,这意味着我不希望显示消息“不应显示此消息”或之后的任何内容。但是,使用示例脚本,消息是可见的,之后的所有内容都在输出中可见。
要使这个
error
钩子生效,需要设置chunk选项error = TRUE
,例如,
knitr::opts_chunk$set(error = TRUE)