【发布时间】:2022-01-16 19:40:50
【问题描述】:
我正在使用一个大型数据库,我希望用户能够使用多个条件或过滤器从数据库中提取行。
假设一个数据框如下所示,其中包含 3 种水果,并列出了它们的原产地和数量。发布的 MWE 代码允许用户通过单个水果或多个水果选择来选择要查看的水果类型。这很好用,在最底部的图像中,我显示了用户选择香蕉和蓝莓的结果。
Fruit Origin Qty
1 Banana MX 5
2 Blueberry OR 15
3 Cherry PA 50
我需要帮助扩展此 MWE 以允许:
- 另外通过“原产地”选择水果,通过第二个选择框 “水果”的当前选择框的右侧。它们不一定需要链接,但如果它不会使事情过于复杂,那就太好了。 (“未链接”是指如果用户决定按 Origin 选择,则任何水果选择都将被忽略和覆盖)。
- 在当前使用的
multiInput()函数中,或任何其他包或 有人推荐的功能,如何自动 输入可用的唯一行 ID 选项,而不是手动键入 他们在编写代码时,就像在choices = c("Banana", "Blueberry", "Cherry")下面的线?在我正在使用的实际数据库中,也有 许多行 ID 需要手动输入。 - 对于“水果”和“产地”的用户选择,如何合并“全部”选项?
也许我需要另一个包。
MWE 代码:
library("shiny")
library("shinyWidgets")
ui <- fluidPage(
multiInput(
inputId = "id",
label = "Fruits :",
choices = c("Banana", "Blueberry", "Cherry"),
selected = "Banana", width = "400px",
options = list(enable_search = FALSE,
non_selected_header = "Choose between:",
selected_header = "You have selected:"
)
),
tableOutput("table")
)
server <- function(input, output, session) {
data <- data.frame(Fruit=c("Banana", "Blueberry", "Cherry"),
Origin=c("MX","OR","PA"),
Qty=c(5,15,50)
)
observeEvent(input$id,{
dataSelect <- data[data$Fruit %in% c(input$id), ]
output$table <- renderTable(dataSelect)
})
}
shinyApp(ui = ui, server = server)
【问题讨论】:
-
您已经在使用
shinyWidgets- 为什么不使用selectizeGroupUI() 或pickerGroupUI()。 -
在您发表评论之前从未听说过它们。让我调查一下。
标签: r select input filter shiny