【问题标题】:Manually set conditional formatting boundaries with a formattable table in Shiny使用 Shiny 中的可格式化表格手动设置条件格式边界
【发布时间】:2018-04-29 12:35:16
【问题描述】:

我有以下闪亮的应用程序:

library(shiny)

list1 <- c(0.2,0.8,0.5)
list2 <- c("element1", "element2", "element3")
df <- data.frame(list1, list2)

UI <- fluidPage(
  formattableOutput("table1")
)
Server <- function(input, output) {

  output$table1 <- renderFormattable({
    formattable(df, list(
      list1 = color_tile("green", "red") 
    ))
  })

}


shinyApp(ui = UI, server = Server)

现在按表有某种条件格式。这行得通。但是,我希望能够自己进行格式化。所以fe - low barrier(绿色)应该是0,上限(红色)应该是1。

关于如何做到这一点的任何建议?

【问题讨论】:

    标签: r shiny formattable


    【解决方案1】:

    我找不到使用任何 formattable 函数手动设置条件格式边界的方法。但是,边界似乎始终设置为给定列的最小值和最大值,因此您可以通过硬编码两行(包含所需的最小值和最大值)来解决此问题,然后使用 CSS 隐藏它们,如下所示:

    CSS:

    /*
    * www/styles.css
    */
    
    table tr:nth-child(-n + 2) {
      display: none;
    }
    

    R:

    library(shiny)
    
    list1 <- c(0.0,1.0,0.2,0.8,0.5)
    list2 <- c("", "", "element1", "element2", "element3")
    df <- data.frame(list1, list2)
    
    UI <- fluidPage(
      includeCSS("www/styles.css"),
      formattableOutput("table1")
    )
    Server <- function(input, output) {
    
      output$table1 <- renderFormattable({
        formattable(df, list(
          list1 = color_tile("green", "red") 
        ))
      })
    
    }
    
    
    shinyApp(ui = UI, server = Server)
    

    请注意,仅当您要显示的值都在零和一之间时,此修复才有效。如果您使用超出该范围的任何内容,则边界将重置为新的最小值/最大值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-18
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多