2016-03-25 2 views
5

Я создаю pandoc.table с длинным именем столбца, которое я хочу обернуть, чтобы моя таблица не исчезла с страницы pdf. Я знаю, что вы можете использовать split.tables, но это устраняет ясность таблицы. Использование split.cells, похоже, ничего не делает, даже если оно представлено в виде вектора.Обертывание имен столбцов таблицы pandoc в r markdown

--- 
    output : pdf_document 
--- 

```{r,echo=FALSE, results="asis"} 
library(pander) 
mytab = data.frame(ReallySuperExtraLongColumnNameThatIWantToWrap=1:2, col2=2001:2002) 
pandoc.table(mytab) 
``` 

ответ

6

Ниже будет производить таблицу с разрывом строки в заголовке:

```{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, так как в именах фреймов также не допускаются пробелы.

+0

Спасибо за советы! Я понял, что изменение «стиля» таблицы pandoc действительно сделает то, что я хочу! Я использовал стиль = 'rmarkdown'; однако style = 'multiline' заботится об этом! – Killian

+0

Но 'style =" multiline "' является значением по умолчанию, поэтому, если вы не укажете 'style', это будет использоваться. Это правда, что 'style =" rmarkdown "' похоже, не поддерживает разрывы строк в ячейках, но установка 'style =" multiline "' allone не добавляет разрывов строк, где нет пробелов. Он разбивается на пробелы и по умолчанию использует 'split.cells = 30'. – Stibu

+1

Этот ответ не сработал для меня. Мне нужно было использовать аргумент 'keep.line.breaks', чтобы почтить' \ n'. – jsta

 Смежные вопросы

  • Нет связанных вопросов^_^