如何通过conditionalPanel设置一系列默认值?

时间:2014-06-04 19:44:19

标签: r shiny

我有一个numericInput,基于selectInput,应该将四个不同输入中的一个作为默认值。预期的行为是您下拉selectInput并且条件面板填充适当的值。相反,似乎隐藏的面板仍然传递变量,行为似乎无法预测,有利于第一个面板。

是否有多个条件版本?

selectInput("type",label=strong("Model Type"),
            choices = list(One="1",
            Two="2",
            Three="3",
            Four="4")),

            conditionalPanel(
            condition = "input.type == '1'",
            numericInput("numGroups",label=strong("Num Groups"),value=10))
             ,              
            conditionalPanel(
            condition = "input.type == '2'",
            numericInput("numGroups",label=strong("Num Groups"),value=20))
            ,
            conditionalPanel(
            condition = "input.type == '3'",
            numericInput("numGroups",label=strong("Num Groups"),value=30))
            ,
            conditionalPanel(
            condition = "input.type == '4'",
            numericInput("numGroups",label=strong("Num Groups"),value=40))

1 个答案:

答案 0 :(得分:1)

您的所有输入都具有相同的ID。为什么没有numericInput,如果所选值发生变化,则更新其值?

例如,在ui.R

shinyUI(basicPage(
  selectInput("type",label=strong("Model Type"),
              choices = list(One="1",
                             Two="2",
                             Three="3",
                             Four="4")),
  numericInput("numGroups", label=strong("Num Groups"), 0)
))

然后在server.R

shinyServer(function(input, output, session) {
  observe({
    new.val <- switch(input$type, "1"=10, "2"=20, "3"=30, "4"=40)   
    updateNumericInput(session, "numGroups", value=new.val)
  })
})