R 有条件和tabsetpanel未按预期工作时发亮

R 有条件和tabsetpanel未按预期工作时发亮,r,shiny,R,Shiny,我有一个闪亮的应用程序,在侧边栏面板中有tabsetpanels和conditional面板。问题是其中一个条件面板在不应该出现的时候也会出现。下面是代码:我在侧边栏面板中显示面板的名称。如果我单击“假设和场景”,然后在侧边栏面板中单击“假设”,我希望只看到“假设”,但也会看到“汽车总量”。我已经研究了两个多小时的代码,并对其进行了修改,但我找不到错误(或者可能是一个bug)。 我非常感谢你的帮助。这是密码 ui <- fluidPage( sidebarLayout( sid

我有一个闪亮的应用程序,在侧边栏面板中有tabsetpanels和conditional面板。问题是其中一个条件面板在不应该出现的时候也会出现。下面是代码:我在侧边栏面板中显示面板的名称。如果我单击“假设和场景”,然后在侧边栏面板中单击“假设”,我希望只看到“假设”,但也会看到“汽车总量”。我已经研究了两个多小时的代码,并对其进行了修改,但我找不到错误(或者可能是一个bug)。 我非常感谢你的帮助。这是密码

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      conditionalPanel(
        condition = "input.tabs_a == 't_ass'",
        h4("Assumptions")
      ),
      conditionalPanel(
        condition = "input.tabs_c == 't_cara'",
        h4("Car aggregate")
      ), # End conditionalPanel
      conditionalPanel(
        condition = "input.tabs_c == 't_carf'",
        h4("Car fuel")
      ), # End conditionalPanel
      conditionalPanel(
        condition = "input.tabs_c == 't_carfp'",
        h4("Car fuel power:")
      ) # End conditionalPanel
    ),    # End sidebarPanel
    mainPanel(
      tabsetPanel(
        type = "tabs", 
        tabPanel( 
          "Assumptions and Scenarios",
          tabsetPanel(
            type = "tabs",  id = "tabs_a",
            tabPanel(
              "Assumptions",  value = "t_ass"
            ), # Close tabpanel t_ass,
            tabPanel(
              "Scenarios", value = "t_scen"
            ) # Close tabpanel t_scen
          ) # Close tabsetpanel
        ), # Close tabPanel t_Ass
        tabPanel(
          "Transport results",
          tabsetPanel(
            type = "tabs", id = "tabs_c",
            tabPanel(
              "Cars: Aggregated", value = "t_cara"
            ),  # Close tabpanel t_cara
            tabPanel(
              "Cars: Fuel",  value = "t_carf"
            ), # Close tabpanel
            tabPanel(
              id = "t_carfp",
              "Cars: Fuel vs Power",  value = "t_carfp",
            ) # Close tabpanel t_carfp
          ) # Close tabset tabs_c
        ) # Close tabpanel Transport results
      ) # Close tabset tabs_a
    ) # End mainPanel
  )  # End sidebarLayout
) # End fluidPage

server <- function(input, output) {
}

shinyApp(ui = ui, server = server)

ui我找到了解决方案:它需要两个条件,一个是针对tabsetpanel id,另一个是针对tabpanel值。代码如下:

 ui <- fluidPage(sidebarLayout(
sidebarPanel(
  conditionalPanel(
    condition = "input.tabs == 'a1' && input.tabs_a == 't_ass'", ns = NS(NULL),
    h4("Assumptions")
  ),
  conditionalPanel(
    condition = "input.tabs == 'a1' && input.tabs_a == 't_scen'",  ns = NS(NULL),
    h4("Scenarios")
  ),
  conditionalPanel(
    condition = "input.tabs == 't1' && input.tabs_c == 't_cara' ",  ns = NS(NULL),
    h4("Car aggregate")
  ), # End conditionalPanel
  conditionalPanel(
    condition = "input.tabs == 't1' && input.tabs_c == 't_carf' ",  ns = NS(NULL),
    h4("Car fuel")
  ), # End conditionalPanel
  conditionalPanel(
    condition = "input.tabs == 't1' && input.tabs_c == 't_carfp' ",
    h4("Car fuel power:")
  ) # End conditionalPanel
),    # End sidebarPanel
mainPanel(
  tabsetPanel(
    type = "tabs", id = "tabs",
    tabPanel(id = 'a1', value = 'a1', 
             "Assumptions and Scenarios",
             tabsetPanel(
               type = "tabs",  id = "tabs_a", 
               tabPanel(
                 "Assumptions",  value = "t_ass"
               ), # Close tabpanel t_ass,
               tabPanel(
                 "Scenarios", value = "t_scen"
               ) # Close tabpanel t_scen
             ) # Close tabsetpanel
    ), # Close tabPanel t_Ass
    tabPanel(id = "t1", value = "t1",
             "Transport results",
             tabsetPanel(
               type = "tabs", id = "tabs_c",
               tabPanel(
                 "Cars: Aggregated", value = "t_cara"
               ),  # Close tabpanel t_cara
               tabPanel(
                 "Cars: Fuel",  value = "t_carf"
               ), # Close tabpanel
               tabPanel(
                 id = "t_carfp",
                 "Cars: Fuel vs Power",  value = "t_carfp",
               ) # Close tabpanel t_carfp
             ) # Close tabset tabs_c
    ) # Close tabpanel Transport results
  ) # Close tabset tabs_a
) # End mainPanel  )   # End sidebarLayout) # End fluidPage    server <- function(input, output) { } hinyApp(ui = ui, server = server)
ui