r - r Shiny:使用复选框发出过滤数据
问题描述
在我闪亮的应用程序中,我使用复选框来过滤我的数据。考虑我有一个带有集合和颜色的数据框的示例:集合 1 包含红色和黄色,集合 2 仅包含红色,集合 3 仅包含黄色。
当我现在按红色和黄色过滤我的数据时,它返回 set2(仅包含红色)、set 3(仅包含黄色)和包含两者的 set1。但是,我想要的输出是选择红色和黄色只会返回包含两种颜色的组(set1)。
我希望返回的组与我的复选框选择完全匹配。即仅检查红色将返回仅包含红色的组,仅检查黄色将返回仅包含黄色的组,检查红色和黄色将返回包含红色和黄色的组。
此示例的代码(这是我的应用程序的简化版本)如下:
我的服务器:
library(dplyr)
library(shiny)
shinyServer(function(input, output) {
data <- structure(list(Set = c("Set1", "Set1", "Set1", "Set2", "Set2",
"Set2", "Set3", "Set3", "Set3", "Set4"), Colour = c("red", "red",
"yellow", "red", "red", "red", "yellow", "yellow", "yellow",
"blue")), class = "data.frame", row.names = c(NA, -10L))
output$choose_colour <- renderUI({
colour.names <- as.vector( unique(data$Colour ))
checkboxGroupInput("colours", "Choose Colours to Include",
choices = colour.names)
})
model.data <- reactive({
filtered_data <- data %>% group_by(Set) %>% filter(all(Colour%in% input$colours))
filtered_data
})
output$filteredData <- renderDataTable({
filtered_data <- model.data()
filtered_data
})
})
我的用户界面:
ui <- fluidPage(
mainPanel(
uiOutput('choose_colour'),
dataTableOutput('filteredData')
)
)
解决方案
我改变了顺序并为所有人更改了任何
library(dplyr)
library(shiny)
library(purrr)
server <- shinyServer(function(input, output) {
data <- structure(list(Set = c("Set1", "Set1", "Set1", "Set2", "Set2",
"Set2", "Set3", "Set3", "Set3", "Set4"), Colour = c("red", "red",
"yellow", "red", "red", "red", "yellow", "yellow", "yellow",
"blue")), class = "data.frame", row.names = c(NA, -10L))
output$choose_colour <- renderUI({
colour.names <- as.vector( unique(data$Colour ))
checkboxGroupInput("colours", "Choose Colours to Include",
choices = colour.names)
})
model.data <- reactive({
filtered_data <- data %>% group_by(Set) %>% filter(all(Colour %in% input$colours) & all(input$colours %in%Colour))
filtered_data
})
output$filteredData <- renderDataTable({
filtered_data <- model.data()
filtered_data
})
})
ui <- fluidPage(
mainPanel(
uiOutput('choose_colour'),
dataTableOutput('filteredData')
)
)
shinyApp(ui,server)
推荐阅读
- python-2.7 - 不同的 unicode 处理 python2.7.9 vs 2.7.15
- maven - java - 如何将log4j2的日志输入到Java中的ByteBuffer?
- c - 预处理器是否可以检查是否使用了链接器选项?
- python - 是否有任何用于卷积神经网络的 Python 代码,但没有 Tensorflow/Theano/Scikit 等?
- javascript - 如何使用 for 循环将正确数量的重复项连接成一个字符串?
- python - 用python合并多个mp3音频文件
- julia - 错误:LoadError:找不到 imagemagick 二进制文件。安装了吗?在朱莉娅
- google-chrome-extension - 关于构建 Chrome 扩展程序的问题
- eclipse - 如何使用 Maven 运行作为插件安装到 Eclipse 应用程序中的 JUnit5 测试
- sql - DB2 Stored Procedure to (ALTER) RESTART 带有编号的列