我试图在包含一些自定义S3类的HTML表中添加颜色以用于条件格式设置。如何保留我的S3类使用的格式设置方法,并且仍然更改表中单元格的外观?
例如:
library(dplyr)
library(kableExtra)
df <- data.frame(a = c(-1.2345, 0, 1.2345), b = c(-1.2345, 0, 1.2345))
format.myclass <- function(x, ...) {
paste(round(x, 2), "♥")
}
class(df$a) <- c("myclass", class(df$a))
class(df$b) <- c("myclass", class(df$b))
在此数据框中,该类的所有数字均正确显示:
> df
a b
1 -1.23 ♥ -1.23 ♥
2 0 ♥ 0 ♥
3 1.23 ♥ 1.23 ♥
但是当我将kableExtra样式属性添加到单元格时,它将不再起作用:
df %>% mutate(a = cell_spec(a, color = ifelse(a<0, "red", "green"))) %>%
kable(., escape = F) %>%
kable_styling()
使用myclass
时是否可以保持cell_spec()
格式?
更新:显式调用类格式化程序即可完成这项工作:
df %>% mutate(a = cell_spec(format.myclass(a), color = ifelse(a<0, "red", "green"))) %>%
kable(., escape = F) %>%
kable_styling()
但是有一种方法可以自动为其类调用此格式化程序吗?