灵活的基本条件格式

Flextable Basic Conditional Formatting

我有一个 flextable,如果它们大于或小于某个 %,我会尝试有条件地格式化百分比数字。这是一种简单的条件格式,所以我不确定为什么它不起作用。我觉得好像我在这里遗漏了一些明显的东西。

这是一个例子:


myft = structure(list(Name = c("Bob", "Fred", "Joe"), `2020-03-30` = c(96, 
                                                                       100, 36)), row.names = c(NA, -3L), class = c("tbl_df", "tbl", 
                                                                                                                    "data.frame"))
myft = flextable(myft)


myft = bg(myft, i = ~ Name  > 50,
            j = 2,
            bg="red")
myft

此代码生成此图像:

您想使用基于“2020-03-30”列的条件格式:

library(flextable)
myft = structure(list(Name = c("Bob", "Fred", "Joe"), `2020-03-30` = c(96, 
                                                                       100, 36)), row.names = c(NA, -3L), class = c("tbl_df", "tbl", 
                                                                                                                    "data.frame"))
myft = flextable(myft)


myft = bg(myft, i = ~ `2020-03-30`  > 50, 
          j = 2,
          bg="red")
myft

编辑:

如果您想要跨多列进行条件着色,您可以创建一个颜色矩阵:

library(flextable)
myft = structure(list(Name = c("Bob", "Fred", "Joe"), 
                      `2020-03-30` = c(96, 100, 36),
                      `2020-04-30` = c(30, 100, 36)), 
                 row.names = c(NA, -3L), class = c("tbl_df", "tbl", "data.frame"))

colormatrix <- ifelse(myft[, -1] > 50, "red", "white")
myft %>% flextable() %>% bg(j = 2:3, bg=colormatrix)