【问题标题】:R Shiny DT shade table cells based on TRUE or FALSE基于 TRUE 或 FALSE 的 R Shiny DT 阴影表单元
【发布时间】:2023-03-28 15:50:01
【问题描述】:

我正在尝试根据单元格的内容格式化 R Shiny 应用程序中表格单元格的背景颜色。内容为 TRUE 或 FALSE,并使用布尔函数分配。 styleEqual() 不是格式化单元格的正确方法吗?以下将运行,但我的单元格保持未着色。

output$myTable <-
      DT::renderDataTable({
        result<-custom_function()
        result<-
        datatable(result)%>% formatStyle(
          names(result),
          backgroundColor = styleEqual(c(TRUE, FALSE), c('green', 'red'))
        )
        return(res)
      })

【问题讨论】:

  • 可重现的示例将很有帮助。尝试定义一个特定的列,可以测试 T 和 F 以分配颜色。

标签: r shiny dt


【解决方案1】:

styleEqual 是可行的方法,但您需要使用数字 (1, 0) 值而不是逻辑 (TRUE, FALSE)。

这是一个例子:

library(shiny)
library(DT)
library(magrittr)

iris2 <- iris
iris2$logical <- ifelse(iris$Sepal.Length > 5, TRUE, FALSE)

ui <- fluidPage(
  DT::dataTableOutput("tbl")  
)

server <- function(input, output, session) {
  output$tbl <- DT::renderDataTable( {
    datatable(iris2) %>% formatStyle(
      "logical",
      target = 'row',
      backgroundColor = styleEqual(c(1, 0), c('green', 'red'))
    )
  })
}

shinyApp(ui, server)

【讨论】:

  • 谢谢!让它工作。您还可以在 TRUE/FALSE 列上的 dplyr mutate 中执行 if_else 语句,并将其设置为您想要的任何内容,例如“yes”、“no”或“match”、“non-match”。这就是我最终所做的。
猜你喜欢
  • 2021-11-09
  • 2018-04-13
  • 1970-01-01
  • 2018-07-02
  • 2021-12-13
  • 2021-03-25
  • 2019-07-07
  • 2020-09-19
  • 1970-01-01
相关资源
最近更新 更多