R:突出显示闪亮的数据表

时间:2014-07-14 12:53:34

标签: css r shiny dt

我对R来说比较新,并尝试使用Shiny软件包。 我有一些非常相似的东西:http://shiny.rstudio.com/gallery/basic-datatable.html所以我们可以使用那里的代码。

我想要添加的是一些单元格/行会突出显示(彩色背景或彩色字体)。如果你看一下这个例子,我希望有一个行/单元格(整行或者只是单元格,并不重要)如果汽车有8个或更多的汽缸,则为红色,如果汽车有6个或更少,则为黄色,绿色如果它有4或更少。

有没有办法用Shiny包装做到这一点?我已经尝试过ShinyBS,但它没有做任何事情。

我也看到了这一点:http://shiny.rstudio.com/gallery/datatables-demo.html。排序列在此处获得新颜色。这至少有点像我想要的那样,所以我认为CSS可能就是答案,但它并没有随处可见。

希望有人可以提供帮助!

2 个答案:

答案 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'))
) 

enter image description here

答案 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")))