RMarkdown Kable宽度问题

时间:2015-03-25 22:17:16

标签: r-markdown

我正在尝试创建一个表来使用RMarkdown中的Kable来保存一些基本信息,这些信息将在HTML,PDF和Word中生成。这是我的代码

---
title: "test"
author: ''
date: "2015/03/24"
output:
 pdf_document:
 keep_tex: yes  
---

```{r kable1, echo=FALSE}
Variable <- c("VAR1", "VAR2", "VAR3", "VAR4")
Label <- c("LABEL", "A very       loooooooooooooooooooooooooooooooooooooooooooo     ooooooooooooooooooooooooooooooooooooooo nnnnnnngggggggg label yall", "LAB3", "LAB4")
Classification <- c("Type1", "Type2", "Type1", "Type1")
data <- data.frame(Variable, Label, Classification)
library(knitr)
kable(data)
```

```{r kable2, echo=FALSE}
Variable <- c("VAR1", "VAR2", "VAR3", "VAR4")
Label <- c("LABEL", "LabLE", "LAB3", "LAB4")
Classification <- c("Type1", "Type2", "Type1", "Type1")
data <- data.frame(Variable, Label, Classification)
library(knitr)
kable(data)
```

HTML输出如下。 enter image description here 这就是我要的。我喜欢表填写html的方式。但是,当我制作PDF时,我得到以下内容。 enter image description here

正如我们所看到的PDF存在问题,第一个表格在页面上运行,第二个表格没有填满整个宽度。不幸的是,对于R,Kable和RMarkdown来说,我是一个n00b。有没有办法在kable表上设置选项,以便PDF在页面放置和宽度方面看起来像HTML一样好?谢谢!

1 个答案:

答案 0 :(得分:4)

LaTeX不会为您打破表格单元格中的长行 - 或者您应该使用自定义环境,这有时在编写由Pandoc处理的降价时非常令人沮丧。这就是为什么我提出了在通过pander package转换为降价之前打破细胞内部长线的想法。快速举例:

> pander(data, split.cells = 30, split.table = Inf)

-------------------------------------------------------------------------
 Variable                      Label                      Classification 
---------- --------------------------------------------- ----------------
   VAR1                        LABEL                          Type1      

   VAR2                       A very                          Type2      
           loooooooooooooooooooooooooooooooooooooooooooo                 
              ooooooooooooooooooooooooooooooooooooooo                    
                    nnnnnnngggggggg label yall                           

   VAR3                        LAB3                           Type1      

   VAR4                        LAB4                           Type1      
-------------------------------------------------------------------------

或者,如果您有多个具有相同问题的表,请指定split值一次:

> panderOptions('table.split.table', Inf)
> pander(data)

-------------------------------------------------------------------------
 Variable                      Label                      Classification 
---------- --------------------------------------------- ----------------
   VAR1                        LABEL                          Type1      

   VAR2                       A very                          Type2      
           loooooooooooooooooooooooooooooooooooooooooooo                 
              ooooooooooooooooooooooooooooooooooooooo                    
                    nnnnnnngggggggg label yall                           

   VAR3                        LAB3                           Type1      

   VAR4                        LAB4                           Type1      
-------------------------------------------------------------------------

简而言之,请查找table.split.tabletable.split.cells global options,尽管还有其他一些有用的调整。