使用Shiny中的formattable表手动设置条件格式边界

时间:2018-04-29 12:35:17

标签: r shiny formattable

我有以下Shiny Application:

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)

现在,table有一些条件格式。这有效。但是,我希望能够自己进行格式化的界限。因此,fe - low barrier(绿色)应为0,上边界(红色)应为1。

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

1 个答案:

答案 0 :(得分: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)

请注意,只有当您要显示的值全部介于0和1之间时,此修复才有效。如果您使用该范围之外的任何内容,边界将重置为新的最小/最大。