2015-12-02 30 views
0
一個選項

我有一個簡單的應用程序有光澤,就像這裏:禁用時,第二選擇在selectizeInput

ui.R:

library(shiny) 

data(iris) 

shinyUI(fluidPage(

    titlePanel("Shiny Text"), 

    sidebarLayout(
    sidebarPanel(
     selectizeInput("species", label=NULL, options=list(placeholder="Choose species"), 
        choices = c(levels(iris$Species), "all"), 
        multiple=TRUE) 
    ), 

    mainPanel(
     tableOutput("tabela") 
    ) 
) 
)) 

server.R:

library(shiny) 
library(dplyr) 

data(iris) 

shinyServer(function(input, output) { 

    output$tabela <- renderTable({ 

     if(input$species == "all"){ 
      iris 
     } else{ 
      iris %>% 
       filter(Species %in% input$species)  
     } 
    }) 
})   

當我選擇「virginica」,「setosa」或「versiciolor」之一時,我想要的是阻止選項「全部」。選項全部和東西沒有任何意義...

你知道如何處理它嗎?

回答

1

這工作,重新定義取決於選擇的無功輸出:

server.R

library(shiny) 
library(dplyr) 

data(iris) 
specChoices <- levels(iris$Species) 

shinyServer(function(input, output) { 

    output$menu <- renderUI({ 
    if (!is.null(input$species)){ 
     if (any(input$species %in% specChoices)) { 
     selectizeInput("species", label=NULL, options=list(placeholder="Choose species"), 
         choices = specChoices, selected = input$species, 
         multiple=TRUE) 
     } else { 
     selectizeInput("species", label=NULL, options=list(placeholder="Choose species"), 
         choices = c(specChoices, "all"), selected = "all", 
         multiple=TRUE) 
     } 
    } else { 
     selectizeInput("species", label=NULL, options=list(placeholder="Choose species"), 
        choices = c(specChoices, "all"), 
        multiple=TRUE) 
    } 
    }) 

    output$tabela <- renderTable({ 
    if (!is.null(input$species)){ 
     if("all" %in% input$species){ 
     iris 
     } else{ 
     iris %>% 
      filter(Species %in% input$species)  
     } 
    } else { 
     iris 
    } 
    }) 
})   

ui.R

library(shiny) 

data(iris) 

shinyUI(fluidPage(

    titlePanel("Shiny Text"), 

    sidebarLayout(
    sidebarPanel(
    uiOutput("menu") 
    ), 

    mainPanel(
     tableOutput("tabela") 
    ) 
) 
)) 
相關問題