Недавно я отправил пакет в rOpenSci, и они предпочитают использовать message()
, а не cat()
для пользовательской стороны. консольный вывод. Когда я переключился на свой пакет, я заметил сбивающее с толку изменение в форматировании отображаемых виньеток. Я воспроизвел проблему в следующем отчете R Markdown.
---
title: "MWE"
author: "Will Landau"
date: "11/20/2017"
output: html_document
---
```{r testcat}
for(x in LETTERS[1:3]){
cat(x, "\n")
}
```
```{r testmessage}
for(x in LETTERS[1:3]){
message(x)
}
```
```{r testmessage2}
for(x in LETTERS[1:3]){
message(x, "\n", appendLF = FALSE)
}
```
Для первого фрагмента кода я получаю желаемый результат: все три строки объединяются в одну серую рамку.
## A
## B
## C
Но для второго и третьего фрагментов каждой строке выделен отдельный серый прямоугольник.
## A
.
## B
.
## C
Как мне продолжать использовать message()
, не прерывая таким образом вывод knitr
?
message
вместо этого? По умолчаниюmessage
выводит на stderr, поэтому я думаю, что вы видите эту проблему - по той же причине ошибки получают свои собственные строки. Со страницы справкиmessage
: обработчик по умолчанию отправляет сообщение соединению stderr(). - person Dason   schedule 20.11.2017message()
, потому что rOpenSci предпочитает его , утверждая, что пользователю проще подавить, чемcat()
. Сам пакет находился в CRAN почти год и только сейчас (надеюсь) переместился и в rOpenSci. - person landau   schedule 20.11.2017