Поворот таблицы с уценкой R в pdf

Я пишу в R Markdown и имею таблицу с непредвиденными обстоятельствами, которая довольно широка. Я конвертирую документ R markdown в PDF с помощью pandoc.

Можно ли поворачивать или сжимать стол? В идеале это было бы сделано без необходимости переключения на форматирование LaTeX.

Мои попытки:

Я злоупотреблял параметрами фигуры в книтре, чтобы попытаться это сделать, но использую ли я kable или xtable, мне не повезло. Некоторые перестановки, которые я попытался, включают:

```{r out.extra='angle=90', results='asis'}
library(knitr)
kable(iris[1:5,])
``` 

``{r size='footnotesize', results='asis'}
library(knitr)
kable(iris[1:5,])
```

```{r out.extra='angle=90', results='asis'}
library(xtable)
xtable(iris[1:5,])
```

```{r size='footnotesize', results='asis'}
library(xtable)
xtable(iris[1:5,])
```  

Все они хорошо отображают таблицу, но не вращают ее.

Код, который я использую для вязания, это:

Rscript -e "library(knitr); knit('table.Rmd', 'table.md')"

А для преобразования в pdf:

pandoc table.md -o table.pdf

Ответы

Ответ 1

out.extra='angle=90' работает только на рисунках и, к сожалению, не в таблицах. Вот два возможных подхода:

KableExtra (Повернуть страницу)

Вы можете легко повернуть таблицы, используя полезный пакет аддонов kableExtra. В частности, функция landscape() помещает таблицу на одну ландшафтную страницу. Это полезно для больших таблиц, которые не могут печататься на странице с портретом.

library(kableExtra)

kable(iris[1:5,],
      format = "latex", booktabs = TRUE) %>%
  kableExtra::landscape()

Ограничение этой функции состоит в том, что она заставляет новую страницу, поэтому в зависимости от размера вашей таблицы она может оставить немного пробела.

KableExtra (ширина шкалы)

Вы можете масштабировать ширину таблицы с помощью функции kable_styling(latex_options = "scale_down"). Это заставит таблицу ширину страницы.

   kable(iris[1:5,],
          format = "latex", booktabs = TRUE) %>%
          kable_styling(latex_options = "scale_down")

Дополнительные примеры пакета kableExtra см. здесь: https://haozhu233.github.io/kableExtra/awesome_table_in_pdf.pdf

Звездочет (таблица поворота)

Другие варианты доступны, но в основном это требует установки дополнительных пакетов LaTeX. Например, пакет stargazer может печатать таблицы в ландшафте с помощью аргумента float.env:

```{r, results="asis"}
stargazer(iris[1:5,], 
          float.env = "sidewaystable")
```

Для этого требуется \usepackage{dcolumn} в преамбуле LaTeX

Подробнее о настройке преамбулы LaTex здесь: https://tex.stackexchange.com/questions/171711/how-to-include-latex-package-in-r-markdown

Ответ 2

Можете ли вы просто использовать t()?

library(xtable)
xtable(t(iris[1:5,]))

Если ваша таблица все еще длинная, разделите ее на несколько таблиц. например:.

splits = floor(seq(1, ncol(iris), length=5))
for(i in 2:length(splits)){
 mini.tab = iris[ , splits[i-1]:splits[i]]
 xtable(mini.tab)
}

Ответ 3

В файл Rmd можно добавить код LATEX:

\usepackage{lscape}
\usepackage{pdfpages}

Some text on a portrait page.

\newpage
\blandscape

## Title, lorem ipsum

```{r, results = "asis"}
kable(iris[1:5,], caption = "Lorem again")
```
Lorem ipsum...

\elandscape

Some other text on a portrait page.