2017-08-02 93 views
1

我想使一個複選框能夠過濾數據集年。然而,並非每個變量都具有每年的所有數據,所以我只想要變量具有用於顯示在ui中的數據的年份。可悲的是,在將我的代碼分割成條件面板後,按鈕不再進行過濾。製作一個動態CheckboxGroupInput與閃亮

conditionalPanel(condition = "input.Select2 == 'AFD' | input.Select2 == 'Piraten'", 
          checkboxGroupInput("Year", label = h3("Checkbox group"), 
               choices = "2013"), 
               selected = "2013"), 
     conditionalPanel(condition = "input.Select2 == 'DieLinke'", 
         checkboxGroupInput("Year", label = h3("Checkbox group"), 
              choices = list("2009", "2013"), 
              selected = "2013")), 
     conditionalPanel(condition = "input.Select2 == 'Gruene' | input.Select2 == 'FDP' | input.Select2 == 'SPD' | input.Select2 == 'CDU'", 
         checkboxGroupInput("Year", label = h3("Checkbox group"), 
              choices = list("1998", "2002", "2005","2009", "2013"), 
     selected = "2013")) 

有誰知道爲什麼?

這裏的服務器功能生成圖表的示例:使用mtcars數據集這將幫助你實現數據幀的動態checkboxGroupInput,並進一步篩選工作的例子

dfParteien %>% 
               filter(Partei %in% chosen_party) %>% 
               filter(Jahr %in% input$Year) %>% 
               count(word) %>% 
               with(wordcloud(word, n, max.words = input$Slider1, colors=pal12)) 

回答

1

這裏:

library(shiny) 
library(DT) 
data <- mtcars 

shinyApp(
    ui = fluidPage(
    selectInput("select1", "select cyl:", choices = unique(data$cyl)), 
    uiOutput("checkbox"), 
dataTableOutput("table") 
), 
    server = function(input, output) { 

    output$checkbox <- renderUI({ 
     choice <- unique(data[data$cyl %in% input$select1, "gear"]) 
     checkboxGroupInput("checkbox","Select gear", choices = choice, selected = choice[1]) 

    }) 

    output$table <- renderDataTable({ 
     data <- data %>% filter(cyl %in% input$select1) %>% filter(gear %in% input$checkbox) 
     datatable(data) 
    }) 

    } 
) 

你並不需要使用conditionalPanel,如果你只是將checkboxGroupInput移動到服務器並使用input$select來過濾選擇。

首先: 你的示例代碼是不好的,你應該學會如何創建reproducible example

所有第二: 代碼有相當一些錯誤,如贈送3個checkboxGroupInput部件相同ID(年),這是不會工作,ID必須是唯一的每個部件閃亮。