将kableExtra :: cell_spec()输出与自定义S3格式化方法结合

时间:2019-04-04 10:06:22

标签: r dplyr kable

我试图在包含一些自定义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()

但是有一种方法可以自动为其类调用此格式化程序吗?

0 个答案:

没有答案