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条件=两条或更少的语句时,我已经得到了这个工作,但我需要它至少评估三条。到目前为止,我还没有找到解决此问题的运气。任何帮助,将不胜感激!谢谢