我在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
答案 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.