Ниже будет производить таблицу с разрывом строки в заголовке:
```{r,echo=FALSE, results="asis"}
library(pander)
mytab = data.frame("ReallySuperExtraLongColumn\nNameThatIWantToWrap"=1:2,
col2=2001:2002,
check.names = FALSE)
pandoc.table(mytab)
```
Разрыв строки кодируется с \n
. Это не разрешенный символ в имени столбца, и функция data.frame()
обычно удаляет его. Вы можете использовать check.names = FALSE
для подавления этого поведения и сохранить имена столбцов точно так же, как вы их ввели. Кроме того, можно переопределить имя столбца в отдельной строке:
mytab = data.frame(ReallySuperExtraLongColumnNameThatIWantToWrap=1:2, col2=2001:2002)
names(mytab)[1] = "ReallySuperExtraLongColumn\nNameThatIWantToWrap"
Вы также можете установить ширину ячеек с split.cells
. Затем разрывы строк будут сгенерированы автоматически, однако разрывы появляются только тогда, когда в заголовке столбца есть пробел. Пример:
```{r,echo=FALSE, results="asis"}
library(pander)
mytab = data.frame("Really Super Extra Long Column Name That I Want To Wrap"=1:2,
col2=2001:2002,
check.names = FALSE)
pandoc.table(mytab, split.cells = 15)
```
Это дает перерывы после «Экстра» и «Имя». Обратите внимание, что вам все еще нужно check.names = FALSE
, так как в именах фреймов также не допускаются пробелы.
Спасибо за советы! Я понял, что изменение «стиля» таблицы pandoc действительно сделает то, что я хочу! Я использовал стиль = 'rmarkdown'; однако style = 'multiline' заботится об этом! – Killian
Но 'style =" multiline "' является значением по умолчанию, поэтому, если вы не укажете 'style', это будет использоваться. Это правда, что 'style =" rmarkdown "' похоже, не поддерживает разрывы строк в ячейках, но установка 'style =" multiline "' allone не добавляет разрывов строк, где нет пробелов. Он разбивается на пробелы и по умолчанию использует 'split.cells = 30'. – Stibu
Этот ответ не сработал для меня. Мне нужно было использовать аргумент 'keep.line.breaks', чтобы почтить' \ n'. – jsta