Ответ 1
Этот вопрос имеет несколько аспектов - и его отчасти проблема XY. В основе лежит вопрос (как я его читал):
Как я могу узнать, что не так, если
knitr
завершается сбой и не выводит выходной файл?
- В случае выхода в формате PDF довольно часто компиляция выходного файла PDF завершается с ошибкой после возникновения ошибки, но есть промежуточный файл TEX. Открытие этого файла может привести к появлению сообщений об ошибках.
- Как было предложено Грегором, вы можете запустить код в кусках по строкам в консоли (или куском). Однако это может не воспроизводить все проблемы, особенно если они связаны с рабочим каталогом или средой.
-
capture.output
может использоваться для печати отладочной информации во внешний файл. - Наконец (в отличие от моего предыдущего комментария), можно распечатать в окне прогресса RStudio (или, тем не менее, он вызвал): сообщения о перехватах будут напечатаны в окне выполнения. По сути, сообщение должно поступать из
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}
Окно выполнения:
Конечно, для документов с более или большими объектами крюк должен быть настроен для выборочной печати (частей) объектов.