Когда я render()
и *.Rmd
файл локально в RStudio, вывод из функции render()
отображается в консоли:
Basi c .Rmd
file:
---
title: "test"
output: html_document
---
```{r setup, include=FALSE}
sink("./output.txt", type = 'output')
knitr::opts_chunk$set(echo = TRUE)
```
## Summary
```{r cars}
summary(cars)
```
## Error
```{r}
dbGetQuery()
```
Для построения:
library(rmarkdown)
render('./test.rmd')
Вывод:
Это замечательно, когда я создаю отчеты локально и я вижу прогресс и ошибки (если есть). Мне нужно контролировать этот вывод в stdout (или stderr), но я не могу передать этот вывод в это место, потому что knitr
использует capture.input
, который использует sink()
(см. Первый комментарий) . Вместо этого я даже попытался пропустить файл, но хотя файл output.txt
создан, в этом файле ничего не записано.
Это проблема для меня, потому что я использую render()
в * 1042 Я не могу отправить вывод чанка из файла .Rmd
в контейнере Docker в stderr или stdout. Мне нужно отслеживать вывод чанка на наличие ошибок в коде контейнера R внутри файла .Rmd
(для диагностики ошибок соединения БД соединения), и отправка этих чанков в stdout или stderr - единственный способ сделать это (без входа в контейнер который в моем случае использования (т. е. развернутый в AWS) невозможен)
Я рассмотрел параметры knitr chunk , и, кажется, не существует никакой опции, которую я могу установить принудительно выводить чанк в файл или в stdout или stderr.
Есть ли какой-нибудь способ, которым я могу записать весь вывод чанка в stdout или stderr внутри функции render()
? Этот вопрос нескольких лет похож на мой (если не идентичен), но принятый ответ не подходит для моего варианта использования