2

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

我要补充的是,一些单元格/行变得突出显示(彩色背景或彩色字体)。如果你看这个例子,我想有行/单元格(整行或只是单元格,没关系)如果汽车有 8 个或更多 cyl,则为红色,如果它有 6 个或更少,则为绿色,如果它有4个或更少。

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

我也看过这个:http ://shiny.rstudio.com/gallery/datatables-demo.html 。排序的列在这里得到了新的颜色。这至少有点符合我想要的,所以我认为 CSS 可能是答案,但还没有得到任何结果。

希望任何人都可以提供帮助!

4

2 回答 2

3

不创建新列:

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")))
于 2017-10-16T14:49:15.697 回答
2

您可以创建一个flag字段来匹配颜色和使用styleEqual``DT``

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

在此处输入图像描述

于 2017-10-16T13:45:21.073 回答