2017-09-15 3 views
2

ändern Ich muss die Zelle färben, wenn der Wert der Zelle größer ist als 80. Zum Beispiel ist angesichts dieser Datenrahmen genannt df:Wie beurteilen Sie die Farbe der Zelle in der Tabelle Kable Ausgabe in knitr

dput(df) 

structure(list(Server = structure(1:2, .Label = c("Server1", 
"Server2"), class = "factor"), CPU = c(79.17, 93), UsedMemPercent = c(16.66, 
18.95)), .Names = c("Server", "CPU", "UsedMemPercent"), row.names = c(NA, 
-2L), class = "data.frame") 

df [2,2] sollte in roter Farbe sein. Ich war in der Lage, die Farbe des Textes durch so etwas wie dieses mit XTABLE zu ändern:

df[, 2] = ifelse(df[, 2] > 80, paste("\\color{red}{", round(df[, 2], 2), "}"), round(df[, 2], 2)) 

Wenn ich dies tun und mit Kable aus der Tabelle drucken, es wird nicht ausdrucken. Irgendwelche Ideen wie kann ich die Zelle in kable Ausgabetabelle färben?

Antwort

3

Kein knitr Lösung ...
Sie können mit DT::datatableformatStyle spezifischen Zellen modifizieren. Es hat mehr Anzeigeoptionen und ich verwende list(dom = "t"), um sie auszuschalten und ordering = FALSE, um Sortieroptionen von der Spitze der Tabelle zu entfernen.

library(magrittr) 
library(DT) 
df %>% 
    datatable(options = list(dom = "t", ordering = FALSE), 
       rownames = FALSE, 
       width = 10) %>% 
    formatStyle("CPU", backgroundColor = styleEqual(93, "red")) 

enter image description here

Wenn Sie kable Weg bevorzugen, dann sollten Sie kableExtra versuchen. Sie haben die Option change background for specified rows.

2

Tatsächlich brauchen Sie nicht einmal oder kableExtra, wenn alles, was Sie brauchen, die Farbe dieser Zelle ist. Da jedoch der Autor von kableExtra, ich das Paket allerdings empfehlen: P

# What u have now 
df <-structure(list(Server =structure(1:2, .Label =c("Server1","Server2"), class = "factor"), CPU =c(79.17, 93), UsedMemPercent =c(16.66,18.95)), .Names =c("Server", "CPU", "UsedMemPercent"), row.names =c(NA,-2L), class = "data.frame") 
df[, 2] =ifelse(df[, 2]>80,paste("\\color{red}{",round(df[, 2], 2), "}"),round(df[, 2], 2)) 
# What you need 
kable(df, "latex", escape = F) 

enter image description here

1

Eine andere Lösung mein huxtable Paket mit:

library(huxtable) 
ht <- as_hux(df) 
ht <- set_background_color(ht, where(ht > 80), "red") 
ht 
Verwandte Themen