gpt4 book ai didi

r - 如何在 R Markdown 中捕获内联代码块中的错误?

转载 作者:行者123 更新时间:2023-12-04 04:09:14 25 4
gpt4 key购买 nike

我正在使用 rmarkdown::render 在一个循环中批量渲染多个 Rmd 文件,我需要能够获得输出,即使对于那些在内联代码中有错误的文件也是如此。我无法手动编辑内联代码以包含诸如 try() 之类的内容,因此需要某种编织钩子(Hook)。

我尝试编写一个内联 knit_hook 来捕获内联代码错误,但这不起作用,因为表达式在传递给 Hook 函数之前已被求值。

如有任何建议,我们将不胜感激。

谢谢!

最佳答案

我想我最终明白了这一点。诀窍是同时设置 inlineevaluate.inline Hook 。下面,evaluate.inline 是对默认函数的编辑,将 try() 添加到求值中。 inline Hook 然后测试输出类,如果是 “try-error”,则返回对象 as.vector(无属性):

knitr::knit_hooks$set(
evaluate.inline = function (code, envir = knit_global()) {
v = try(eval(xfun::parse_only(code), envir = envir))
knitr::knit_print(v, inline = TRUE, options = knitr::opts_chunk$get())
},
inline = function(x) {
if (any(class(x) == "try-error")) {
as.vector(x)
} else x
})

希望其他人觉得这很有用。

关于r - 如何在 R Markdown 中捕获内联代码块中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62028925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com