2014-09-15 4 views
6

Ich benutze RStudio 0.98.1056 unter Windows 7, und was auch immer die aktuelle Version von pander ist auf CRAN ab heute (Ich habe gerade das Paket installiert).Tabellen in pander, style = "multiline"

Ich versuche, den Knitr-> Markdown ->. Docx literate-Programmierung Workflow zum Erstellen einer Tabelle in Word verwenden. Einige der Zellen müssen harte Zeilenumbrüche enthalten. Ich glaube, das in dem folgenden Link basierend auf Informationen möglich sein soll.

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

Es heißt: „Ein Schrägstrich durch eine neue Zeile gefolgt ist auch ein harter Zeilenumbruch Hinweis: in mehrzeiligen und Gittertabellenzellen, diese ist die einzige Möglichkeit, einen harten Zeilenumbruch zu erstellen, da nachfolgende Leerzeichen in den Zellen ignoriert werden. "

Ich versuche, eine Tabelle mit Zellen in der folgenden Art und Weise enthalten Zeilenumbrüche zu erstellen:

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

Aber das Newline wird gerade abgezogen. Gleiches, wenn ich sep = "< newline>" oder sep = "< br>" (ohne führende Leerzeichen) verwende. Ich habe auch versucht, einen zusätzlichen Backslash hinzuzufügen, falls R den ersten "frisst"; und die "Einfüge" -Funktion umzuschalten, um jedes dieser möglichen Trennzeichen als einen eigenen Ausdruck anstelle des Arguments sep = einzuschließen. Keines dieser Dinge hat funktioniert.

Ich ging, um den Beispielcode in der Pander-Hilfedokumentation auszuprobieren, genau wie eine Plausibilitätsprüfung, und es scheint das Problem allgemein - Beispielcode, den ich dachte, sollte mehrzeilige Tabellen nicht auf meinem Rechner produzieren.

Hat noch jemand andere Multiline-Tabellen in pander zur Arbeit bekommen?

Antwort

7

Yup, bitte install the development version von GitHub - dieses Problem wurde ein few months ago behoben. Zum Beispiel:

> 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

Danke dafür. Ich habe die Entwicklerversion von pander installiert (nachdem ich einige Probleme mit Rtools gelöst habe), und wenn ich 'pander (mytable)' starte, bekomme ich die gleiche Ausgabe, die du in R gesehen hast. Auf der anderen Seite strickt diese Ausgabe nicht richtig Entweder HTML oder docx: Die Zeilenumbrüche werden entfernt. Was vermisse ich? Ich benutze immer noch 'pandoc.table (mytable, style =" multiline ")' anstelle der einfacheren Syntax, das ist also nicht das Problem. Ich habe es auch mit style = "grid" versucht: keine Würfel. – ErinMcJ

+0

@ErinMcJ das ist ein Pandoc-Problem. Zitat aus seiner Dokumentation: "* Ein umgekehrter Schrägstrich, gefolgt von einem Zeilenumbruch ist auch ein fester Zeilenumbruch. Hinweis: In mehrzeiligen und Gitter Tabellenzellen ist dies die einzige Möglichkeit, einen harten Zeilenumbruch zu erstellen, da Leerzeichen in den Zellen ignoriert werden. * "Sie müssen also nicht nur die manuellen Zeilenumbrüche (' \ n') hinzufügen, sondern auch einen harten Zeilenumbruch. Sehen Sie eine Demo, indem Sie 'pander (descr :: CrossTable (mtcars $ am, mtcars $ gear), split.table = Inf) ausführen' – daroczig

+1

Aha! Ja! Ich war wirklich verwirrt darüber, was eine harte Zeilenumbruch ist, wenn es nicht die Backslash-n-Sequenz ist. Aber es stellt sich heraus, dass, damit '\\ n' entsprechend dargestellt wird, ich einen zusätzlichen Backslash als Escape-Zeichen benötige: so,' \\\ n.' – ErinMcJ