基于选项卡面板选择在 R Shiny 中显示/隐藏 selectinput

Posted

技术标签:

【中文标题】基于选项卡面板选择在 R Shiny 中显示/隐藏 selectinput【英文标题】:Show / Hide selectinput in R shiny based on tabpanel selection 【发布时间】:2021-07-09 17:41:48 【问题描述】:

我需要为不同的标签显示不同的下拉/选择输入。

例如。如果选择了第一个选项卡,则显示带有值列表的 selectinput Tim,Bill,Jeff,... 如果选择了选项卡二,则显示带有值列表的 selectinput Cat、Dog、Squirrel、...

我在网上找到了以下脚本,但反之亦然(根据选择输入选择显示/隐藏选项卡面板 - 但我需要根据选项卡面板选择显示/隐藏选择输入)。

runApp(list(
  ui = shinyUI(
    fluidPage(
      
      sidebarLayout(
        sidebarPanel(
          selectInput(
            inputId = 'selected.indicator',
            label = 'Select an option: ',
            choices = c('mean', 'median', 'mode')
          )
        ),
        mainPanel(
          tabsetPanel(
            tabPanel("Prevalence / mean", value = 'meanTab', DT::dataTableOutput("prevtab")),
            tabPanel("Subgroups comparison", value = 'medianTab',  DT::dataTableOutput("comptab")),
            id ="tabselected"
          )
        )
      )
    )
  ),
  
  server = function(input, output, session) 
    
    observe(
      req(input$selected.indicator)
      if (grepl("MEDIAN", toupper(input$selected.indicator), fixed = TRUE)) 
        hideTab(inputId = "tabselected", target = 'medianTab')
      
      else showTab(inputId = "tabselected", target = 'medianTab')
    )
  
))

【问题讨论】:

【参考方案1】:

给你。

runApp(list(
  ui = shinyUI(
    fluidPage(
      
      sidebarLayout(
        sidebarPanel(
          selectInput(
            inputId = 'selected.indicator',
            label = 'Select an option: ',
            choices = c('')
          )
        ),
        mainPanel(
          tabsetPanel(
            tabPanel("tab1", value = 'tab1', p("tab1")),
            tabPanel("tab2", value = 'tab2',  p("tab2")),
            id ="tabselected"
          )
        )
      )
    )
  ),
  
  server = function(input, output, session) 
    choices <- reactiveValues(
      tab1 = c('Tim', 'Bill', 'Jeff'),
      tab2 = c('Cat', 'Dog', 'Squirrel')
    )
    observeEvent(input$tabselected, 
      updateSelectInput(session, 'selected.indicator', choices = choices[[input$tabselected]])
    )
  
))

【讨论】:

非常感谢!!!上面的脚本效果很好。需要一个小的调整。如果两个 inputselect 值都是从表中派生的,如何替换“choices = c('')”部分?前任。 tab1 = table1$column1 和 tab2 = table2$column1 而不是 c('Tim'...) 请忽略。我懂了。它只是你的脚本。只需要调整输入选择源。非常感谢您的支持!!!

以上是关于基于选项卡面板选择在 R Shiny 中显示/隐藏 selectinput的主要内容,如果未能解决你的问题,请参考以下文章

R Shiny - 如何在 selectInput 中显示选择标签

Shiny 应用程序仅在一个选项卡中显示绘图。是啥原因?

在 R Shiny 中,如何为反应对象渲染绘图?

R Shiny:如何将数据表添加到动态创建的选项卡

R shiny 中的级别替换创建两个级别列表,一个为 NULL

Shiny仪表板中的条件面板