Этот вопрос был мотивирован Rmarkdown, не выводя результаты системной команды в html файл. По какой-то причине вывод system()
в R (или system2()
) не может быть зафиксирован с помощью sink()
или capture.output()
, поэтому в настоящее время нет возможности для knitr записывать вывод. Например, в консоли R:
> system('ls')
DESCRIPTION
NAMESPACE
R
README.md
inst
man
но в документе knitr вы не увидите результат, потому что capture.output(system('ls'))
- character(0)
, то есть вывод не может быть захвачен. Конечно, я могу сделать cat(system('ls', intern = TRUE), sep = '\n')
, как я упомянул в ответе на этот вопрос, но это неловко. Интересно, является ли это способом захвата вывода system()
без использования intern = TRUE
и cat()
.
Обновить: см. https://github.com/yihui/knitr/issues/1203 для взлома, который я предоставил для решения проблемы.