【问题标题】:R Shiny: Conditional formatting selectInput itemsR Shiny:条件格式选择输入项
【发布时间】:2019-01-31 05:56:33
【问题描述】:

当我们在数据框中缺少所有列时,通常我们不希望用户选择它们来绘制。有很多方法可以做到这一点,但是否可以让 selectInput 中的项目具有条件颜色。

例如,如何让selectInput 项目列表中所有缺失的列名(如我的示例代码中的var2 列)变为灰色。换句话说,如何重写selectInput,以便我们传入一个指示向量进行条件格式化。

library(shiny)

server <- function(input, session, output) {

  DATA = data.frame(var1 = c(2,3,4,1,5), var2 = c(NA,NA,NA,NA,NA))

  output$select_1 = renderUI({
    variables = names(DATA)
    selectInput("select_input","select", choices = variables)

    # is.all.na.indicator = sapply(DATA, function(x) all(is.na(x))) 
    # selectInput("select_input","select", choices = variables, goGrey = is.all.na.indicator)
  }) 
}

ui <- fluidPage(
    uiOutput("select_1")
)

shinyApp(ui = ui, server = server)

【问题讨论】:

  • 既然您正在动态生成 UI,为什么不考虑 NA 选择要在 selectInput 中显示的列?我的意思是删除选择输入列表中已经包含所有 NA 的所有列。
  • AFAIK,selectInput 的选项在任何情况下都不能灰显。
  • 我知道删除所有 NA 的列很容易,但我只是想知道用户是否可以看到更多。

标签: r shiny


【解决方案1】:
library(shiny)

server <- function(input, session, output) {

  DATA <- data.frame(var1 = c(2,3,4,1,5), var2 = c(NA,NA,NA,NA,NA))

  output$select_1 <- renderUI({
    variables <- variableNames <- names(DATA)
    emptyColumns <- which(sapply(DATA, function(x) all(is.na(x))))
    for(i in emptyColumns){
      variableNames[i] <- 
        sprintf("<span style='color:red;'>%s</span>", variables[i])
    }
    selectizeInput("select_input", "select", 
                   choices = setNames(variables, variableNames), 
                   options = list(render = I("
  {
    item: function(item, escape) { return '<div>' + item.label + '</div>'; },
    option: function(item, escape) { return '<div>' + item.label + '</div>'; }
  }")))
  }) 
}

ui <- fluidPage(
  uiOutput("select_1")
)

shinyApp(ui = ui, server = server)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-29
    • 2020-06-27
    • 1970-01-01
    • 2021-07-10
    • 2019-08-21
    • 2021-11-14
    • 2017-04-21
    • 1970-01-01
    相关资源
    最近更新 更多