使用 DT 包基于列值的条件格式两列
Conditional format two columns based on column values using DT package
例如使用 mtcars 数据集
library(tidyverse)
library(DT)
dat <- mtcars
我想根据其中的值为 table 的 dat$disp
列的背景着色。即,如果该值低于 150,则为绿色,如果该值介于 150 和 250 之间,则为橙色,如果高于 250,则为红色。
我尝试通过以下方式使用另一个答案的帮助:
dat <- mtcars
dat$colors <- with(dat, ifelse(disp<=150, "green", ifelse(disp>=250, "yellow"), "red"))
datatable(dat,
options = list(
columnDefs = list(
list(visible = FALSE, targets = 12)
)
)
) %>% formatStyle("disp", valueColumns = "colors", backgroundColor = JS("value"))
但我认为我把它弄得太复杂了,这会使单元格变成红色和黄色,并且不符合我想要的条件格式。
我还想对 'car name' 列使用相同的颜色,以便它们与 disp
列匹配。
我不太习惯 R,非常感谢任何关于这个和 DT 包的指导,我相信这比我想象的要简单得多。
谢谢!
这是否解决了您的问题?
dat <- dat %>%
rownames_to_column(var = "car_name") %>%
as_tibble() %>%
mutate(colors = case_when(disp <= 150 ~ "green",
disp >= 250 ~ "yellow",
TRUE ~ "red"))
datatable(dat,
options = list(columnDefs = list(list(
visible = FALSE, targets = 12
)))) %>% formatStyle(
c("disp", "car_name"),
valueColumns = "colors",
backgroundColor = JS("value")
)
这可能会有用。 colors
列不是必需的。
注意颜色:正如您所注意到的,如果该值是
低于 150 色绿色,
如果它介于 150 和 250 之间,颜色为橙色,
及以上 250 色红色。
dat <- dat %>% rownames_to_column(var = "car_name")
datatable(dat) %>%
formatStyle(
c("disp", "car_name"),
valueColumns = "disp",
backgroundColor = styleInterval(c(150, 250), c('green','orange', 'red'))
)
例如使用 mtcars 数据集
library(tidyverse)
library(DT)
dat <- mtcars
我想根据其中的值为 table 的 dat$disp
列的背景着色。即,如果该值低于 150,则为绿色,如果该值介于 150 和 250 之间,则为橙色,如果高于 250,则为红色。
我尝试通过以下方式使用另一个答案的帮助:
dat <- mtcars
dat$colors <- with(dat, ifelse(disp<=150, "green", ifelse(disp>=250, "yellow"), "red"))
datatable(dat,
options = list(
columnDefs = list(
list(visible = FALSE, targets = 12)
)
)
) %>% formatStyle("disp", valueColumns = "colors", backgroundColor = JS("value"))
但我认为我把它弄得太复杂了,这会使单元格变成红色和黄色,并且不符合我想要的条件格式。
我还想对 'car name' 列使用相同的颜色,以便它们与 disp
列匹配。
我不太习惯 R,非常感谢任何关于这个和 DT 包的指导,我相信这比我想象的要简单得多。
谢谢!
这是否解决了您的问题?
dat <- dat %>%
rownames_to_column(var = "car_name") %>%
as_tibble() %>%
mutate(colors = case_when(disp <= 150 ~ "green",
disp >= 250 ~ "yellow",
TRUE ~ "red"))
datatable(dat,
options = list(columnDefs = list(list(
visible = FALSE, targets = 12
)))) %>% formatStyle(
c("disp", "car_name"),
valueColumns = "colors",
backgroundColor = JS("value")
)
这可能会有用。 colors
列不是必需的。
注意颜色:正如您所注意到的,如果该值是
低于 150 色绿色,
如果它介于 150 和 250 之间,颜色为橙色,
及以上 250 色红色。
dat <- dat %>% rownames_to_column(var = "car_name")
datatable(dat) %>%
formatStyle(
c("disp", "car_name"),
valueColumns = "disp",
backgroundColor = styleInterval(c(150, 250), c('green','orange', 'red'))
)