2016-03-25 30 views
5

Sto creando un pandoc.table con il nome della colonna lunga che voglio avvolgere in modo che la mia tabella non vada fuori dalla pagina pdf. So che puoi usare split.tables, ma questo toglie la chiarezza del tavolo. Usare split.cells non sembra fare nulla, anche se fornito come vettore.Rimozione dei nomi delle colonne della tabella pandoc in markdown r

--- 
    output : pdf_document 
--- 

```{r,echo=FALSE, results="asis"} 
library(pander) 
mytab = data.frame(ReallySuperExtraLongColumnNameThatIWantToWrap=1:2, col2=2001:2002) 
pandoc.table(mytab) 
``` 

risposta

6

Quanto segue produrrà una tabella con un'interruzione di riga nell'intestazione:

```{r,echo=FALSE, results="asis"} 
library(pander) 
mytab = data.frame("ReallySuperExtraLongColumn\nNameThatIWantToWrap"=1:2, 
        col2=2001:2002, 
        check.names = FALSE) 
pandoc.table(mytab) 
``` 

L'interruzione di linea è codificato con \n. Questo non è un carattere consentito in un nome di colonna e normalmente la funzione data.frame() lo rimuove. È possibile utilizzare check.names = FALSE per eliminare questo comportamento e mantenere i nomi delle colonne esattamente come sono stati immessi. In alternativa, si potrebbe ridefinire il nome della colonna su una riga separata:

mytab = data.frame(ReallySuperExtraLongColumnNameThatIWantToWrap=1:2, col2=2001:2002) 
names(mytab)[1] = "ReallySuperExtraLongColumn\nNameThatIWantToWrap" 

è anche possibile impostare la larghezza delle celle con split.cells. Le interruzioni di riga verranno quindi generate automaticamente, tuttavia le interruzioni vengono visualizzate solo quando c'è uno spazio nell'intestazione della colonna. Un esempio:

```{r,echo=FALSE, results="asis"} 
library(pander) 
mytab = data.frame("Really Super Extra Long Column Name That I Want To Wrap"=1:2, 
        col2=2001:2002, 
        check.names = FALSE) 
pandoc.table(mytab, split.cells = 15) 
``` 

Questo dà interruzioni dopo "Extra" e "Nome". Nota che hai ancora bisogno di check.names = FALSE, perché anche gli spazi non sono consentiti nei nomi dei frame di dati.

+0

Grazie per i suggerimenti! Mi sono reso conto che cambiare lo "stile" del tavolo pandoc farà effettivamente quello che voglio io! Stavo usando style = 'rmarkdown'; tuttavia, style = 'multiline' si prende cura di esso! – Killian

+0

Ma 'style =" multiline "' è l'impostazione predefinita, quindi se non si specifica 'style', verrà utilizzato. È vero che 'style =" rmarkdown "' sembra non supportare interruzioni di riga nelle celle, ma impostando 'style =" multiline "' allone non aggiunge interruzioni di riga dove non ci sono spazi. Si romperà agli spazi e userà 'split.cells = 30' di default. – Stibu

+1

Questa risposta non ha funzionato per me. Avevo bisogno di usare l'argomento 'keep.line.breaks' per onorare' \ n'. – jsta