【问题标题】:ConditionalPanels for each navbarpage in ShinyShiny中每个导航栏的条件面板
【发布时间】:2021-08-17 11:40:31
【问题描述】:

我对 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)

【问题讨论】:

    标签: r shiny navbar


    【解决方案1】:

    您不需要tabsetPanel 来实现这一点,只需将id 分配给navbarPage 本身,然后查看点击了哪个

    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)
    

    【讨论】:

    • 谢谢!你知道是否有办法保留 sidebarLayout() - 否则很难(至少对我而言)将选项卡和侧边栏并排放置。
    • sidebarLayout 需要mainPanel 所以如果你想要你需要在每个tabPanel 中创建mainPanel
    猜你喜欢
    • 2013-11-03
    • 1970-01-01
    • 2017-03-17
    • 2016-08-14
    • 2018-11-29
    • 2015-07-07
    • 2016-06-04
    • 2020-06-03
    • 1970-01-01
    相关资源
    最近更新 更多