我对R来说比较新,并尝试使用Shiny软件包。 我有一些非常相似的东西:http://shiny.rstudio.com/gallery/basic-datatable.html所以我们可以使用那里的代码。
我想要添加的是一些单元格/行会突出显示(彩色背景或彩色字体)。如果你看一下这个例子,我希望有一个行/单元格(整行或者只是单元格,并不重要)如果汽车有8个或更多的汽缸,则为红色,如果汽车有6个或更少,则为黄色,绿色如果它有4或更少。
有没有办法用Shiny包装做到这一点?我已经尝试过ShinyBS,但它没有做任何事情。
我也看到了这一点:http://shiny.rstudio.com/gallery/datatables-demo.html。排序列在此处获得新颜色。这至少有点像我想要的那样,所以我认为CSS可能就是答案,但它并没有随处可见。
希望有人可以提供帮助!
答案 0 :(得分:2)
您可以创建一个flag
字段以匹配颜色,并使用``DT```的styleEqual
df <- mtcars
df$colr_flag <- ifelse(df$cyl <= 4, 1,
ifelse(df$cyl <=6, 2,
ifelse(df$cyl >=8, 3, 0)))
library(DT)
options(DT.options = list(pageLength = 5))
# style V6 based on values of V6
datatable(df) %>% formatStyle(
'colr_flag', target = 'row',
backgroundColor = styleEqual(c(1, 2,3), c('green', 'yellow','red'))
)
答案 1 :(得分:1)
不创建新列:
jscode <- "
value <= 4 ? 'green' : (value <= 6 ? 'yellow' : (value >= 8 ? 'red' : 'white'))
"
datatable(mtcars) %>% formatStyle(
"cyl", target = "row",
backgroundColor = JS(jscode))
或使用函数styleInterval
:
datatable(mtcars) %>% formatStyle(
"cyl", target = "row",
backgroundColor = styleInterval(c(4, 6, 7), c("green", "yellow", "white", "red")))