2017-02-10 82 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() 
) 

希望它有幫助!