conditionalPanel in shiny基于inputSelect

时间:2016-08-24 05:18:16

标签: r shiny

我正在尝试根据conditionalPanel下拉框中的项目数量实施selectInput

根据下拉列表的值,我可以让条件工作(textInput字段允许您设置下拉列表中的项目数量):

runApp(
  list(ui =  fluidPage(
    textInput("in_number", "number",1),
    uiOutput("dropdown"),
    conditionalPanel("input.dropdown >= 3", p("show some stuff"))
  ),

  server = function(input, output, session) {

    output$dropdown <- renderUI({
      selectInput("dropdown","My Dropdown", c(1:input$in_number))
    })
  }
  )
)

但是,如果我将conditionalPanel更改为:

conditionalPanel("input.dropdown.length >= 3", p("show some stuff"))

然后它不起作用。我在开发人员工具控制台中收到一条错误消息,指出“无法读取未定义的属性'长度'

我认为这与闪亮定义下拉项目有关。

编辑:澄清我的需求。 有没有办法做javascript条件,这将允许我评估下拉列表中的项目数,而不是评估下拉列表的值?

1 个答案:

答案 0 :(得分:-1)

我知道你现在的意思。我建议您使用shinyjs包及其toggle功能来执行您想要的操作。

rm(list = ls())
library(shiny)
library(shinyjs)
runApp(
  list(ui =  fluidPage(
    shinyjs::useShinyjs(),
    textInput("in_number", "number",3),
    uiOutput("dropdown"),      
    p(id = "mydiv", "show some stuff")
  ),

  server = function(input, output, session) {
    output$dropdown <- renderUI({
      selectInput("dropdown1","My Dropdown", c(1:input$in_number))
    })    

    observe({
      toggle(id = "mydiv", condition = as.numeric(input$in_number) >= 3)
    })
  }
  )
)

enter image description here