首页 > 解决方案 > 条件面板和单选按钮选择不起作用

问题描述

我正在尝试根据单选按钮上的输入使用条件面板,如下所示

radioButtons("Type","Review Type:",c("Type1","Type2","Type3"),inline=T)

条件面板语句如下,

conditionalPanel(condition = "input.Type == 'Type1'",wellPanel(
radioButtons("Question1", "do you know R shiny?"choices = c("Y","N","NA"),selected = "Y",inline=T)

conditionalPanel(condition = "input.Type == 'Type2'",wellPanel(
radioButtons("Question1", "do you know Python?"choices = c("Y","N","NA"),selected = "Y",inline=T)


conditionalPanel(condition = "input.Type == 'Type3'",wellPanel(
radioButtons("Question1", "do you know Java?"choices = c("Y","N","NA"),selected = "Y",inline=T)

如果您在条件面板中注意到单选按钮 id(“Question1”)在所有条件面板中都是相同的,那么条件对我来说是有效的,但我已经selected = "Y"为所有单选按钮设置了由于某种原因没有按预期工作(它仅适用于第三个条件面板)

标签: shiny

解决方案


它的行为方式是因为你所有的radioButtons人都有相同的id,所以它们被认为只是一个 UI 元素。给您radioButtons一个唯一的名称,这将正常工作:

ui <- fluidPage(
  radioButtons(inputId = "Type", 
               label = "Review Type:",
               choices = c("Type1", "Type2", "Type3"),
               inline = T),
  conditionalPanel(condition = "input.Type == 'Type1'",
                   wellPanel(
                     radioButtons(inputId = "Question1", 
                                  label = "do you know R shiny?", 
                                  choices = c("Y", "N", "NA"),
                                  selected = "Y",
                                  inline = T)
                   )
  ),  
  conditionalPanel(condition = "input.Type == 'Type2'",
                   wellPanel(
                     radioButtons(inputId = "Question1", 
                                  label = "do you know Python?", 
                                  choices = c("Y", "N", "NA"),
                                  selected = "Y",
                                  inline = T)
                   ) 
  ),
  conditionalPanel(condition = "input.Type == 'Type3'",
                   wellPanel(
                     radioButtons(inputId = "Question1", 
                                  label = "do you know Java?", 
                                  choices = c("Y", "N", "NA"),
                                  selected = "Y",
                                  inline = T)
                   )
  )
)

推荐阅读