Я хочу отфильтровать фрейм данных так, чтобы я выбирал только те строки, в которых категориальная переменная содержит значения, выбранные пользователем блестящего приложения.
Вот воспроизводимый пример:
## app.R ##
library(shiny)
library(shinydashboard)
library(tidyverse)
library(DT)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
selectInput("cut", "Type of cut",
c("All",as.character(unique(diamonds$cut))), selected = "All",
multiple = TRUE)
),
dashboardBody(
DT::dataTableOutput("table")
)
)
server <- function(input, output) {
selectdata <- reactive({
diamonds %>%
filter(ifelse(any(input$cut == "All"), cut %in% unique(diamonds$cut),
cut %in% input$cut))
})
output$table <- DT::renderDT({
selectdata()
}, options = list(scrollX = TRUE))
}
shinyApp(ui, server)
Приложение работает без ошибок, но когда пользователь удаляет «Все» и выбирает, например, «Premuim» и «Хорошо», ничего не появляется.Тем не менее, когда пользователь выбирает «Идеальный», появляются все строки.Кажется, я не вижу, что я делаю неправильно.