Kann ein Klassenattribut mit knitr
auf einzelne Tabellenzellen angewendet werden? Ich habe erfolgreich ein Klassenattribut auf die Abschnittsüberschrift angewendet, die eine knitr::kable
generierte Tabelle enthält und diese zum Formatieren der gesamten Tabelle verwendet. Ich möchte jedoch in der Lage sein, einzelne Zellen bedingt zu formatieren, die eine Klasse auf spezifische Elemente anwenden müssten.Kann ich mit knitr CSS-Stile auf einzelne Tabellenzellen anwenden?
Meine aktuelle Problemumgehung besteht darin, programmgesteuert den Zellinhalt in einem Paar <span>
Tags zu umbrechen und das an knitr::kable
weiterzugeben. Dieser Ansatz erlaubt mir nur, den Text innerhalb der Zelle gegenüber der gesamten Zelle zu formatieren (z. B. Einstellen der Zellenhintergrundfarbe). Hier ist ein Beispiel dafür, was ich zur Zeit mit:
## Read in the report, process the data, send to kable
rpt <- generate.report()
mutate(rpt, Col2 = ifelse(abs(Col2) > Threshold,
paste('<span class="warning">',
sprintf("%.2f", Col2), '</span>'),
sprintf("%.2f", Col2))) %>%
knitr::kable(format="markdown", align = c("l", rep("r", 4)),
col.names = gsub("\\.", "<br>", colnames(.)))
, die in dem folgenden Beispiel HTML-Ausgabe führt:
<td align="right"><span class="warning"> -1.74 </span></td>
Ich möchte in der Lage sein zu haben knitr :: Kable erzeugen so etwas wie dieses :
<td align="right" class="warning"> -1.74 </td>
So kann ich CSS-Stile auf den <td>
Tag umge den <span>
Tag anwenden könnte.
Wenn fett/kursive Stile für Ihren Anwendungsfall ausreichen, dann bietet 'pander' eine eher benutzerfreundliche Lösung dafür: http://rapporter.github.io/pander/#highlighting-cells Und natürlich könnten Sie Optimieren Sie, wie strong/kursiv mit JS/CSS aussieht, daher bedeutet die oben genannte Einschränkung, dass Sie nur zwei zusätzliche Stile in einer Tabelle haben können. Bitte lassen Sie mich wissen, wenn es hilft (indem Sie mich im Kommentar erwähnen, wie @daroczig für eine E-Mail-Benachrichtigung), und ich kann ein reproduzierbares Beispiel finden. – daroczig
@daroczig Danke für die Idee. Leider, während Ihr Vorschlag einen schönen Abschlag produziert, wie Sie klar sagen, erlaubt es nur stark/kursiv. Ich suche nach einer Lösung, die eine größere Flexibilität beim Anwenden einzigartiger Stile auf einzelne Zellen ermöglicht. –
Eine Idee, über die ich nachgedacht habe, ist eine R-Funktion zu schreiben, die die 'knitr :: kable' generierte HTML-Ausgabe nachbearbeitet, um die' ' Tags zu finden und sie zu entfernen und die übergeordneten '' Tags zu editieren. Aber wenn ich diese Komplexität nicht durchgehen muss, würde ich gerne eine vorhandene Lösung verwenden, wenn eine verfügbar ist. –