从pdf中的R markdown旋转表格

时间:2014-02-17 22:50:24

标签: r knitr r-markdown

我在R Markdown写作并且有一个非常广泛的列联表。我正在使用pandoc将R降价文档转换为PDF。

是否可以旋转或收缩桌子?理想情况下,这可以在不必切换到LaTeX格式的情况下完成。

我的尝试:

我一直在滥用knitr中的数字选项来尝试这个,但无论我使用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

3 个答案:

答案 0 :(得分:8)

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")
```

这需要LaTeX前言中的\usepackage{dcolumn}

  

在此处阅读有关自定义LaTex序言的更多信息:https://tex.stackexchange.com/questions/171711/how-to-include-latex-package-in-r-markdown

答案 1 :(得分:0)

你能用t()吗?

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

如果您的表仍然很长,请将其拆分为多个表。 e.g:

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)
}

答案 2 :(得分:0)

您可以在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.