首页 > 解决方案 > Shiny中每个导航栏的条件面板

问题描述

我对 Shiny 有一个简单的问题:我使用的是 navbarPage 布局,并且有两个不同的侧边栏。我希望侧边栏以用户所在应用程序的哪个页面为条件。

这似乎很容易,并且以下方法可以很好地更改侧边栏面板,但是通过这种方法,我的选项卡标题会从顶部导航栏下拉到主面板中。我尝试了各种方法让它们回到导航栏,但都没有奏效。

怀疑有一个非常简单的解决方案,任何帮助都非常感激!

library(shiny)
ui <- navbarPage(title = "example",
                 sidebarLayout(
                 sidebarPanel(
                   conditionalPanel(condition = 'input.tabs==1',"sidebar 1"),
                   conditionalPanel(condition = 'input.tabs==2 | input.tabs==3',"sidebars 2&3")),
                                    
  mainPanel(tabsetPanel(id="tabs",
    
    tabPanel("About",value=1, "hello 1"),
    tabPanel("parameters",value=2, "hello 2"),
    tabPanel("outputs",value=3, "hello 3")
))))

server <- function(input, output) {
  
}

shinyApp(ui = ui, server = server)

标签: rshinynavbar

解决方案


您不需要tabsetPanel来实现这一点,只需将 分配idnavbarPage自身并查看单击了哪个

library(shiny)
ui <- navbarPage(title = "example",
                 id = 'tabs',
                 tabPanel("About",value=1, "hello 1"),
                 tabPanel("parameters",value=2, "hello 2"),
                 tabPanel("outputs",value=3, "hello 3"),
                 sidebarPanel(
                     conditionalPanel(condition = 'input.tabs == 1',"sidebar 1"),
                     conditionalPanel(condition = 'input.tabs == 2 | input.tabs==3',"sidebars 2&3")
                 )
)

server <- function(input, output, session) {
    
    observe({
        print(input$tabs)
    })   
    
}

shinyApp(ui = ui, server = server)

推荐阅读