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.
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
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
Questa risposta non ha funzionato per me. Avevo bisogno di usare l'argomento 'keep.line.breaks' per onorare' \ n'. – jsta