2015-04-03 13 views
13

Vorrei inserire del testo lungo nella tabella di Kable. Ecco un semplice esempio di una tabella con testo di colonna troppo lungo e che deve essere incapsulata affinché la tabella si adatti alla pagina.avvolgere il testo lungo nella colonna della tabella kable

--- 
title: "test" 
output: pdf_document 
--- 

```{r setup, include=FALSE} 
    library(knitr) 
``` 


This is my test 

```{r test, echo=FALSE} 
test <- data.frame(v1=c("This is a long string. This is a long string. This is a long string. This is a long string. This is a long string.", 
         "This is a another long string. This is a another long string. This is a another long string. This is a another long string. This is a another long string."), 
        v2=c(1, 2)) 
kable(test) 
``` 

enter image description here

risposta

12

ho creato il pacchetto pander di produrre tabelle riduzione dei prezzi in modo flessibile. Per impostazione predefinita, suddividerà le celle con una stringa lunga a 30 caratteri, ma ci sono un gruppo di argomenti global options e fn per sovrascriverli, abilitare la sillabazione e altre modifiche. demo rapida:

> pander::pander(test) 

----------------------------------- 
       v1    v2 
------------------------------ ---- 
This is a long string. This is 1 
a long string. This is a long  
string. This is a long string.  
    This is a long string.   

This is a another long string. 2 
This is a another long string.  
This is a another long string.  
This is a another long string.  
This is a another long string.  
----------------------------------- 

> pander::pander(test, split.cell = 80, split.table = Inf) 

------------------------------------------------------------------------------------ 
             v1           v2 
------------------------------------------------------------------------------- ---- 
This is a long string. This is a long string. This is a long string. This is a 1 
         long string. This is a long string.       

This is a another long string. This is a another long string. This is a another 2 
    long string. This is a another long string. This is a another long string.   
------------------------------------------------------------------------------------ 
+1

sembra molto lucido, @daroczig. c'è un argomento per i nomi delle colonne? scusa se l'ho perso –

+1

Grazie @EricGreen. Quale argomento ti manca per i nomi? Probabilmente è meglio impostarli al livello 'data.frame'. – daroczig

+0

'kable' ha' col.names' per ridefinire "v1" in "My text" –

7

Una soluzione alternativa diverso il pacchetto impressionante pander è quello di utilizzare column_spec in kableExtra. In questo caso, il codice seguente farà il trucco.

kable(test, "latex") %>% 
    column_spec(1, width = "10em") 
Problemi correlati