RMarkdown Kable宽度问题

dec*_*cal 5 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)
```
Run Code Online (Sandbox Code Playgroud)

HTML输出如下. 在此输入图像描述 这就是我要的.我喜欢表填写html的方式.但是,当我制作PDF时,我得到以下内容.在此输入图像描述

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

dar*_*zig 4

LaTeX 不会为您打破表格单元格内的长行——或者您应该为此使用自定义环境,这在编写要由 Pandoc 处理的 Markdown 时有时会非常令人沮丧。这就是为什么我想出了在通过pander 包转换为 markdown 之前打破单元格内部的长行的想法。快速示例:

> 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      
-------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

或者,如果您有多个表存在相同问题,请指定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      
-------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

简而言之,寻找table.split.tabletable.split.cells 全局选项,尽管还有许多其他有用的调整。