【问题标题】:R: Highlighting Shiny data tableR:突出显示闪亮的数据表
【发布时间】:2014-09-04 09:28:03
【问题描述】:

我对 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 可能是答案,但还没有得到任何结果。

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

【问题讨论】:

  • 在 www 文件夹中,您可以为 Hilighting 定义 style.css :)
  • 你能举个例子吗?

标签: css r shiny dt


【解决方案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")))

【讨论】:

    【解决方案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'))
    ) 
    

    【讨论】:

      猜你喜欢
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 2019-02-15
      • 2017-08-08
      • 2018-07-14
      • 1970-01-01
      相关资源
      最近更新 更多