我正在尝试创建一个复选框,以便能够按年过滤数据集。然而,并非每个变量都包含每年的所有数据,所以我只想要变量在ui中显示数据的年份。遗憾的是,在将我的代码拆分为条件面板后,按钮不再过滤。
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"))
有谁知道为什么?
以下是在服务器功能中生成的绘图示例:
dfParteien %>%
filter(Partei %in% chosen_party) %>%
filter(Jahr %in% input$Year) %>%
count(word) %>%
with(wordcloud(word, n, max.words = input$Slider1, colors=pal12))
答案 0 :(得分:3)
以下是使用mtcars
数据集的工作示例,该示例将帮助您实现动态checkboxGroupInput
并进一步过滤数据框:
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
其次:
你的代码有很少的错误,例如给三个checkboxGroupInput
小部件提供相同的ID(年份),这是不可行的,每个小部件的ID必须是唯一的。