2014-02-17 84 views
15

我在R Markdown中撰寫並且有一個相當寬的列聯表。我使用pandoc將R markdown文檔轉換爲PDF。從pdf markdown中旋轉表格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

另一種「解決方案」是使用[pander](http://rapporter.github.io/pander/#tables),它可以將「太寬」的表分成多個部分。 – daroczig

+0

我的實際表格是一個應急表,所以能夠通讀它進行比較非常重要。 – sus

+1

您可以嘗試將表格繪製爲圖片[類似這樣的內容](http://blog.mollietaylor.com/2013/10/table-as-image-in-r.html),這可能更容易操作。 – Gregor

回答

0

你能只使用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) 
} 
+0

儘管這個例子很好,我的實際表是仍然太寬轉置! – sus

+0

是的,拆分表通常是一個不錯的選擇,但是我的表是一個應急表,所以拆分它使得它更難理解。 – sus

3

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

+0

'kableExtra'只給我'##目前不支持使用pandoc的通用降價表。' –

+1

您可能沒有在kable函數中說'format =「latex」'。 –

+1

是的,就是這樣。 –

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.