2016-12-15 1 views
3

Ich bin auf der Suche nach einer Möglichkeit, Funktionen anzupassen, die HTML-Tabellen im Viewer oder Browser in einer Weise zeigen, dass sie automatisch den HTML-Code in knitr Dokumente wie rnotebooks einfügen, wenn sie aufgerufen werden.Native Knitr Print Methoden hinzufügen

Speziell ich möchte die Art ändern, wie sich Funktionen im Paket sjPlot verhalten. Im Moment kehren sie ein Objekt mit einem $knitr Attribute, das manuell eingefügt werden muss, und erzeugen dann eine HTML-Tabelle in dem Betrachter:

`r sjt.frq(efc$e42dep, no.output=TRUE)$knitr` 

Eine dieser Funktionen sjt.frq ist. Gibt es eine Möglichkeit, dies zu tun?

Antwort

3

Von knit_print:

library(knitr) 
a = 42 
class(a) = "my_class" 
knit_print.my_class = function(x,...){ 
    res = paste("{{", x,"}}") 
    asis_output(res) 
} 
a 

Es funktioniert, wenn ich Dokument stricken, funktioniert aber nicht mit RNotebooks und funktioniert nicht mit sjt.frq. Jedoch mit RNotebook arbeitet die folgende Anweisung:

library(sjPlot) 
library(sjmisc) 
library(knitr) 

data(efc) 
asis_output(sjt.frq(efc$e42dep, no.output=TRUE)$knitr) 
+0

Meine Erfahrung ist, ist es am besten den Charakter Ausgabe zu erhalten und wickeln Sie es in 'asis_output' auch – Benjamin

+0

@Benjamin Meinen Sie' $ output.complete' von „Zeichenausgabe "? –

+0

Ich bin mit dem Objekt nicht vertraut. Sie benötigen eine Zeichenfolge des HTML-Codes. Das Einfügen einer Zeichenkette in 'asis_output' ist dasselbe wie das Setzen der gleichen Zeichenkette in' cat' mit der Chunk-Option 'output = 'asis'' – Benjamin