2017-02-10 32 views
0

我很努力地创建selectInput菜单,这些菜单仅在选择特定选项卡时才会出现,并且会出现一个特定于其他菜单中可以选择的选项的额外selectInput菜单。 下面简要重复的例子,conditionPanel in R中的多个条件

ui.R

library(shinydashboard) 

ui <- dashboardPage(
    dashboardHeader(title="Essential Fish Habitat Application"), 
    dashboardSidebar(
    sidebarMenu(id="tab", 
     menuItem ("Welcome", tabName = "welcome"), 
     menuItem("EFH Maps",tabName="map"), 
     selectInput("selectSpecies", h3("Select species"), 
        c("Almaco jack" = "ALMACOJACK", 
        "Banded rudderfish" = "BANDEDRUDDERFISH", 
        "Black grouper" = "BLACKGROUPER", 
        "Blackfin snapper" = "BLACKFINSNAPPER", 
        "Blueline tilefish" = "BLUELINETILEFISH", 
        "Brown shrimp" = "BROWNSHRIMP", 
        "Cobia" = "COBIA", 
        "Cubera snapper" = "CUBERASNAPPER"), 
        selected = "ALMACOJACK"), 
     conditionalPanel(condition="input.tab=='map' && input.selectSpecies != 'BANDEDRUDDERFISH' || 
         input.selectSpecies != 'BLACKGROUPER'", 
         selectInput("fishLifestage", h3("Select lifestage:"), 
            c("Eggs"= "eggs", 
             "Larvae" = "larvae", 
             "Postlarvae" = "postLarvae", 
             "Early juveniles" = "earlyJuvenile", 
             "Late juveniles" = "lateJuvenile", 
             "Adults" = "adult", 
             "Spawning adults" = "spawningAdult" 
            ), 
            selected = 'adult')), 
    conditionalPanel(condition="input.tab=='map' && input.selectSpecies == 'BANDEDRUDDERFISH' || 
         input.selectSpecies == 'BLACKGROUPER'", 
         selectInput("shrimpLifestage", h3("Select lifestage:"), 
            c("Fertilized eggs"= "fertilizedEgg", 
            "Larvae, pre-settlement postlarvae" = "larvae", 
            "Late postlarvae, juveniles" = "latePostlarvaeJuvenile", 

            "Sub-adults" = "subAdult", 
            "Non-spawning adults" = "adult", 
            "Spawning adults" = "spawningAdult" 
           ), 
            selected = 'adult')))), 
    dashboardBody() 
) 

server.R

server <- function(input, output) { 

mapSpecies <- reactive({ 
    switch(input$selectSpecies, 
     "ALMACOJACK" = "ALMACOJACK", 
     "BANDEDRUDDERFISH" = "BANDEDRUDDERFISH", 
     "BLACKGROUPER" = "BLACKGROUPER", 
     "BLACKFINSNAPPER" = "BLACKFINSNAPPER", 
     "BLUELINETILEFISH" = "BLUELINETILEFISH", 
     "BROWNSHRIMP" = "BROWNSHRIMP", 
     "COBIA" = "COBIA", 
     "CUBERASNAPPER" = "CUBERASNAPPER") 
    }) 

mapfishLifestage <- reactive({ 
    switch (input$fishLifestage, 
      "spawningAdult"="spawningAdult", 
      "adult"="adult", 
      "earlyJuvenile" = "earlyJuvenile", 
      "lateJuvenile" = "lateJuvenile", 
      'larvae' = 'larvae', 
      'postLarvae' = 'postLarvae', 
      "eggs" = "eggs" 
) 
}) 

mapshrimpLifestage <- reactive({ 
    switch (input$shrimpLifestage, 
      "fertilizedEgg" = "fertilizedEgg", 
      "latePostlarvaeJuvenile" = "latePostlarvaeJuvenile", 
      "adult" = "adult", 
      "spawningAdult"="spawningAdult", 
      "subAdult" = "subAdult", 
      "larvae" = "larvae" 

) 
}) 

} 

我希望出现在selectLifestage菜单只有当标签被选中,并根据映射EFH选择的物种我希望fishLifestage vs. shrimpLifestage selectInput菜单发生变化。当conditionPanel条件=两条或更少的语句时,我已经得到了这个工作,但我需要它至少评估三条。到目前为止,我还没有找到解决此问题的运气。任何帮助,将不胜感激!谢谢

回答

1

我已经添加括号,并改变了||。条件为& &第一个条件面板实现你想要的。

ui <- dashboardPage(
    dashboardHeader(title="Essential Fish Habitat Application"), 
    dashboardSidebar(
    sidebarMenu(id="tab", 
       menuItem ("Welcome", tabName = "welcome"), 
       menuItem("EFH Maps",tabName="map"), 
       selectInput("selectSpecies", h3("Select species"), 
          c("Almaco jack" = "ALMACOJACK", 
           "Banded rudderfish" = "BANDEDRUDDERFISH", 
           "Black grouper" = "BLACKGROUPER", 
           "Blackfin snapper" = "BLACKFINSNAPPER", 
           "Blueline tilefish" = "BLUELINETILEFISH", 
           "Brown shrimp" = "BROWNSHRIMP", 
           "Cobia" = "COBIA", 
           "Cubera snapper" = "CUBERASNAPPER"), 
          selected = "ALMACOJACK"), 
       conditionalPanel(condition="input.tab=='map' && (input.selectSpecies != 'BANDEDRUDDERFISH' && 
         input.selectSpecies != 'BLACKGROUPER')", 
           selectInput("fishLifestage", h3("Select fish lifestage:"), 
              c("Eggs"= "eggs", 
               "Larvae" = "larvae", 
               "Postlarvae" = "postLarvae", 
               "Early juveniles" = "earlyJuvenile", 
               "Late juveniles" = "lateJuvenile", 
               "Adults" = "adult", 
               "Spawning adults" = "spawningAdult" 
              ), 
              selected = 'adult')), 
       conditionalPanel(condition="input.tab=='map' && (input.selectSpecies == 'BANDEDRUDDERFISH' || 
         input.selectSpecies == 'BLACKGROUPER')", 
           selectInput("shrimpLifestage", h3("Select shrimp lifestage:"), 
              c("Fertilized eggs"= "fertilizedEgg", 
               "Larvae, pre-settlement postlarvae" = "larvae", 
               "Late postlarvae, juveniles" = "latePostlarvaeJuvenile", 

               "Sub-adults" = "subAdult", 
               "Non-spawning adults" = "adult", 
               "Spawning adults" = "spawningAdult" 
              ), 
              selected = 'adult')))), 
    dashboardBody() 
) 

希望它有帮助!