2015-03-25 19 views
5

Ich versuche, eine Tabelle zu erstellen, um einige grundlegende Informationen mit Kable in RMarkdown zu halten, die in HTML, PDF und Word generiert werden. Hier ist der Code, den ich habeRMarkdown Kable Breite Ausgaben

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

Die HTML-Ausgabe ist wie folgt. enter image description here Das ist was ich will. Ich mag, wie die Tabelle den HTML-Code ausfüllt. Wenn ich PDF produziere, bekomme ich Folgendes. enter image description here

Wie wir sehen können gibt es Probleme mit der PDF, die erste Tabelle läuft von der Seite und die zweite füllt nicht die gesamte Breite. Ich bin leider ein n00b, wenn es um R, Kable und RMarkdown geht. Gibt es eine Möglichkeit, Optionen für die kable-Tabelle festzulegen, sodass die PDF-Datei in puncto Seitenplatzierung und Breite so schön aussieht wie HTML? Vielen Dank!

Antwort

4

LaTeX wird die langen Zeilen innerhalb einer Tabellenzelle nicht für Sie unterbrechen - oder Sie sollten eine benutzerdefinierte Umgebung dafür verwenden, was manchmal sehr frustrierend sein kann, wenn Sie Abschriften schreiben, die von Pandoc verarbeitet werden sollen. Deshalb kam ich auf die Idee, lange Linien in den Zellen zu brechen, bevor ich über die pander package zum Markdown überging. Schnell Beispiel:

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

Oder wenn Sie mehrere Tabellen mit dem gleichen Problem, geben Sie den split Wert einmal haben wird:

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

Kurz gesagt, suchen Sie nach dem table.split.table und table.split.cellsglobal options, obwohl es einen sind viele andere nützliche Verbesserungen.

+0

Vielen Dank für den Vorschlag. Dies funktioniert für den übergroßen Tisch, aber was ist mit dem kleineren Tisch, irgendwelche Ideen, wie man das auf die Seitenbreite ausdehnt? Ich habe den Link durchgeschaut, den Sie mir geschickt haben (sehr hilfreich), konnte aber nicht viel darüber herausfinden, wie ich die Breite der kleinen Tische erweitern könnte. – decal

+0

@decal das ist kein 'kable', und bezieht sich nicht einmal auf' markdown'. Die PDF-Tabelle wird von Pandoc/pdflatex gerendert, die eine LaTeX-Vorlage verwendet, und die HTLM-Datei verwendet auch ein anderes (CSS) Stylesheet. Wenn Sie ähnliche oder genau die gleiche Ausgabe haben möchten, müssen Sie diese anpassen und [Pandoc entsprechend aufrufen] (http://johnmacfarlane.net/pandoc/README.html#general-writer-options). Weitere Informationen finden Sie in der [verwandten Dokumentation von Pandoc] (http://johnmacfarlane.net/pandoc/demo/example9/templates.html). Ich hoffe, es hilft. – daroczig

+0

Cool, danke für die Hilfe! – decal