2015-05-26 19 views
5

Ich verwende knitr, um einige Berichte zu generieren. Ich benutze kable, um eine HTML-Tabelle im Dokument zu generieren. In den Headern möchte ich Zeilenumbrüche (oder andere HTML-Tags) verwenden, um den TischR knitr Hinzufügen von Zeilenumbrüchen in der Tabellenüberschrift kable()

<!--begin.rcode results='asis' 
s <- rbind(c(1,2,3,4),c(1,2,3,4),c(1,2,3,4)) 
kable(s, col.names=c("Try Newline\nn","Try HTML break<br>%","Past 6 months\nn","\n%")) 
end.rcode--> 

zu verbessern Wie Sie Ich versuche, verschiedene Optionen ohne viel Erfolg zu sehen. In meinem Ergebnis werden Zeilenumbrüche (\ n) nur in einen Zeilenumbruch in der HTML-Quelle übersetzt.
Tags werden in HTML-Sonderzeichen übersetzt.

Irgendwelche Vorschläge?

+0

Was ist 's'? Bitte poste ein reproduzierbares Beispiel, damit "wir das Problem sehen können". – daroczig

+0

Die Frage wurde so geändert, dass Sie das Problem sehen können – Wietze314

Antwort

7

Soweit ich weiß, die pipe table syntax unterstützt keine Zeilenumbrüche in den Zellen, also wenn Sie pandoc verwenden, um Markdown in HTML zu konvertieren (das ist, was RStudio verwendet), dann sollten Sie besser eine funktionsreiche Tabelle wählen Syntax, z multiline oder grid. Nicht sicher, wie das zu tun mit kable, aber pander unterstützt diejenigen:

> library(pander) 
> colnames(s) <- c("Try Newline\nn","Try HTML break<br>%","Past 6 months\nn","\n%") 
> pander(s, keep.line.breaks = TRUE) 

------------------------------------------------------- 
Try Newline Try HTML break<br>% Past 6 months % 
     n         n   
------------- --------------------- --------------- --- 
     1     2     3   4 

     1     2     3   4 

     1     2     3   4 
------------------------------------------------------- 

Aber das ist nicht genug, da Zeilenumbrüche automatisch von pandoc entfernt werden, so dass Sie harte Zeilenumbrüche setzen müssen ("ein Backslash gefolgt durch eine Newline ") basiert auf der related docs. Z.B. Der folgende Code wird wie erwartet in HTML konvertiert:

> colnames(s) <- c("Try Newline\\\nn","Try HTML break\\\n%","Past 6 months\\\nn","\\\n%") 
> pander(s, keep.line.breaks = TRUE) 

----------------------------------------------------- 
Try Newline\ Try HTML break\ Past 6 months\ \ 
     n    %    n   % 
-------------- ----------------- ---------------- --- 
     1    2    3   4 

     1    2    3   4 

     1    2    3   4 
----------------------------------------------------- 
+0

Mit knitr v1.13 funktionieren die harten Zeilenumbrüche mit kable, wenn Sie die Ausgabe als html angeben: 'knitr :: kable (s, format =" html ")' –

Verwandte Themen