我正在尝试打印到控制台(或输出窗口)以进行调试。例如:
\documentclass{article}
\begin{document}
<<foo>>=
print(getwd())
message(getwd())
message("ERROR:")
cat(getwd(), file=stderr())
not_a_command() # Does not throw an error?
stop("Why doesn't this throw an error?")
@
\end{document}
我在输出PDF中得到了结果,但我的问题是我有一个未完成的脚本(所以没有输出PDF来检查),我试图理解为什么。如果编织没有成功完成,似乎也没有日志文件输出。
我正在使用knitr 1.13和Rstudio 0.99.896。
编辑:如果我更改为Sweave,上面的代码将正确输出(和中断),这样我就会认为这是一个编织问题。
答案 0 :(得分:6)
这个问题有几个方面 - 部分是XY problem。核心问题是(正如我所读到的):
如果
knitr
失败并且不生成输出文件,我怎么能看到错误?
capture.output
可用于将调试信息打印到外部文件。knitr
本身,而不是来自代码knitr
评估。如何在RStudio中的进度窗口上打印调试信息?
以下示例使用debug = TRUE
\documentclass{article}
\begin{document}
<<>>=
knitr::knit_hooks$set(debug = function(before, options, envir) {
if (!before) {
message(
paste(names(envir), as.list(envir),
sep = " = ", collapse = "\n"))
}
})
@
<<debug = TRUE>>=
a <- 5
foo <- "bar"
@
\end{document}
进度窗口显示:
当然,对于具有更多或更大对象的文档,应调整钩子以选择性地打印(部分)对象。