2015-05-26 18 views
5

Używam knitr do generowania raportów. Używam kable do generowania tabeli HTML w dokumencie. W nagłówkach chcę użyć linebreaks (lub inne znaczniki HTML) w celu zwiększenia stółR knitr Dodaj linebreak w nagłówku tabeli 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--> 

Jak widać próbuję różnych opcji bez większego sukcesu. W moim wyniku linebreaks (\ n) są po prostu przetłumaczone w liniowym rozbiciu w źródle HTML.
znaczniki są tłumaczone na znaki specjalne HTML.

Wszelkie sugestie?

+0

Co to jest "s"? Proszę opublikować powtarzalny przykład, aby "widzieliśmy" problem. – daroczig

+0

Zmieniono pytanie, więc możesz zobaczyć problem. – Wietze314

Odpowiedz

7

Z tego co mi wiadomo, nie obsługuje podziałów linii w komórkach, więc jeśli używasz pandoc do konwersji przeceny do HTML (to właśnie używa RStudio), lepiej wybierz kilka bardziej funkcjonalnych tabel składnia, np multiline lub grid. Nie wiesz, jak to zrobić z kable, ale pander obsługuje te:

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

Ale to nie wystarczy, jak podziały wiersza są automatycznie usuwane przez pandoc, więc trzeba postawić twarde łamanie wierszy ("backsleshem następnie przez newline ") tam na podstawie related docs. Na przykład. poniższy kod jest konwertowany na HTML zgodnie z oczekiwaniami:

> 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

W knitr v1.13 przerwy w linii prostej działają z kable, jeśli określisz wyjście jako html: 'knitr :: kable (s, format =" html ")' –

Powiązane problemy