2015-03-25 4 views
5

Sto cercando di creare una tabella per contenere alcune informazioni di base utilizzando Kable in RMarkdown che verrà generato in HTML, PDF e Word. Ecco il codice che hoRMarkdown Problemi di larghezza Kable

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

L'output HTML è il seguente. enter image description here Questo è quello che voglio. Mi piace come la tabella compila l'html. Tuttavia, quando produco PDF ottengo il seguente. enter image description here

Come possiamo vedere ci sono problemi con il PDF, la prima tabella scorre fuori dalla pagina e la seconda non riempie l'intera larghezza. Sono, sfortunatamente, un n00b quando si tratta di R, Kable e RMarkdown. C'è un modo per impostare le opzioni sulla tabella kable in modo che il PDF sia bello come l'HTML in termini di posizionamento e larghezza della pagina? Grazie!

risposta

4

LaTeX non interromperà le lunghe code all'interno di una cella di tabella, oppure dovresti utilizzare un ambiente personalizzato per questo, che a volte può essere davvero frustrante quando si scrive markdown per essere elaborato da Pandoc. Ecco perché mi è venuta l'idea di spezzare le lunghe code all'interno delle celle prima di trasformarle in markdown tramite lo pander package. rapido esempio:

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

Oppure, se si avrà diversi tavoli con lo stesso problema, specificare il valore split una volta:

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

Insomma, cercare l'table.split.table e table.split.cellsglobal options, anche se ci sono un un sacco di altre utili modifiche.

+0

Grazie mille per il suggerimento. Questo funziona per la tabella di grandi dimensioni, ma per quanto riguarda la tabella più piccola, qualche idea su come estenderla alla larghezza della pagina? Ho guardato attraverso il link che mi hai inviato (molto utile) ma non sono riuscito a trovare molto su come estendere la larghezza dei tavoli piccoli. – decal

+0

@decal questo non è un 'kable', e nemmeno legato a' markdown'. La tabella PDF viene renderizzata da Pandoc/pdflatex, che utilizza un modello LaTeX e il file HTLM utilizza anche un altro foglio di stile (CSS). Se vuoi avere lo stesso risultato o lo stesso risultato, devi correggerli e [chiamare Pandoc di conseguenza] (http://johnmacfarlane.net/pandoc/README.html#general-writer-options). Per ulteriori dettagli, consultare [documenti correlati di Pandoc] (http://johnmacfarlane.net/pandoc/demo/example9/templates.html). Spero possa essere d'aiuto. – daroczig

+0

Cool, grazie per tutto l'aiuto! – decal