2014-09-15 9 views
6

Sto usando RStudio 0.98.1056 su Windows 7 e qualunque sia la versione corrente di pander su CRAN ad oggi (ho appena installato il pacchetto).tabelle in pander, style = "multiline"

Sto provando a utilizzare il flusso di lavoro di programmazione literate -> markdown ->. Docx per creare una tabella in Word. Alcune celle devono contenere interruzioni di linea. Credo che questo dovrebbe essere possibile sulla base di informazioni nel seguente link:.

http://rmarkdown.rstudio.com/authoring_pandoc_markdown.html

Dice: "Un backslash seguito da un ritorno a capo è anche un'interruzione di linea dura Nota: nelle celle multilinea e griglia tabella, questo è l'unico modo per creare un'interruzione della linea dura, dal momento che gli spazi finali nelle celle vengono ignorati. "

Sto cercando di creare una tabella con le celle che contengono interruzioni di riga nel seguente modo:

library(pander) 
a <- c(1:10) 
b <- c(11:20) 
ab <- paste(a,b,sep='\n') 
N <- ceiling(rpois(10,9)) 
labels <- paste("Question",c(1:10)) 
mytable <- data.frame(labels,ab,N) 
pandoc.table(mytable, style="multiline") 

Ma il ritorno a capo ottiene appena messo a nudo. Lo stesso se uso sep = "< newline>" o sep = "< br>" (senza spazi iniziali). Ho anche provato ad aggiungere un backslash in più, nel caso in cui R stesse "mangiando" il primo; e attivando la funzione "incolla" per includere ciascuno di questi possibili separatori come termine a sé stante, invece che nell'argomento sep = argomento. Nessuna di queste cose ha funzionato.

Sono andato a provare il codice di esempio nella documentazione di aiuto pander, proprio come un controllo di integrità, e sembra che il problema sia generale - codice di esempio che ho pensato non dovrebbe produrre tabelle multilinea, sulla mia macchina.

Qualcun altro ha potuto far funzionare i tavoli multiline in pander?

risposta

7

Sì, per favore install the development version da GitHub - questo problema è stato risolto a few months ago. Es .:

> panderOptions('keep.line.breaks', TRUE) 
> pander(mytable) 

-------------------- 
labels  ab N 
----------- ---- --- 
Question 1 1 11 
      11  

Question 2 2 6 
      12  

Question 3 3 13 
      13  

Question 4 4 12 
      14  

Question 5 5 6 
      15  

Question 6 6 6 
      16  

Question 7 7 11 
      17  

Question 8 8 19 
      18  

Question 9 9 10 
      19  

Question 10 10 9 
      20  
-------------------- 
+0

Grazie per questo. Ho ottenuto la versione di devel di pander installata (dopo aver risolto alcuni problemi con Rtools), e quando eseguo 'pander (mytable)' ottengo lo stesso output che hai visto in R. D'altra parte, quell'output non si adatta correttamente a HTML o docx: i linebreak vengono rimossi. Cosa mi manca? Sto ancora usando 'pandoc.table (mytable, style =" multiline ")' invece della sintassi più semplice, quindi non è questo il problema. Ho anche provato con style = "grid": nessun dado. – ErinMcJ

+0

@ErinMcJ questo è un problema di Pandoc. Citazione dalla sua documentazione: "* Una barra rovesciata seguita da una nuova riga è anche un'interruzione di linea dura Nota: nelle celle di tabella a più righe e a griglia, questo è l'unico modo per creare un'interruzione di linea, poiché gli spazi finali nelle celle vengono ignorati. * "Quindi non solo è necessario aggiungere le interruzioni di riga manuali (' \ n'), ma anche un'interruzione di linea. Guarda una demo eseguendo 'pander (descr :: CrossTable (mtcars $ am, mtcars $ gear), split.table = Inf)' – daroczig

+1

Aha! Sì! Ero davvero confuso su cosa sia un'interruzione di linea, se non è la sequenza backslash-n. Ma si scopre che per '\\ n' per renderizzare in modo appropriato, avevo bisogno di un backslash extra come carattere di escape: quindi,' \\\ n'. – ErinMcJ