Я пытаюсь создать блестящую панель / приложение, чтобы пользователь мог фильтровать данные по различным критериям.После применения фильтров пользователь мог выбрать, какие переменные он / она хочет видеть на гистограмме, а также отфильтрованный набор данных.
Для примера кода я хочу, чтобы пользователи могли фильтровать по местоположению,Уровни Атланта, Чикаго и Сиэтл.Однако я также хочу, чтобы пользователи могли фильтровать сразу по ВСЕМ городам по умолчанию.Все не является опцией в наборе данных, поэтому я хотел добавить опцию «Все».Таким образом, я хочу, чтобы люди фильтровали входные данные $ location_type! = "All", но я не могу заставить его работать.Ниже приведен мой код только с фильтром - если бы вы могли изменить его для работы filter_if, я был бы очень признателен!
library(tools)
library(dplyr)
library(shiny)
library(ggplot2)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
selectInput(inputId = "x",
label = "Predictor:",
choices = c("ID", "location", "title", "job_sat", "motivation", "commitment", "review"),
selected = "ID"),
selectInput(inputId = "y",
label = "Outcome:",
choices = c("ID", "sales", "location", "title", "job_sat", "motivation", "commitment", "review"),
selected = "sales"),
textInput(inputId = "plot_title",
label = "Plot Title:",
placeholder = "Enter text for this plot's title"),
selectInput(inputId = "location_type",
label = "Location:",
choices = c("All", levels(fakeshinydata$location)),
selected = "All",
multiple = TRUE)
),
mainPanel(
plotOutput(outputId = "scatterplot")
)
)
)
server <- function(input, output) {
fake_subset <- reactive({
req(input$location_type)
dplyr::filter(fakeshinydata, location %in% input$location_type)
})
pretty_plot_title <- reactive({toTitleCase(input$plot_title)})
output$scatterplot <- renderPlot({
ggplot(data = fake_subset(),
aes_string(x = input$x, y = input$y)) +
geom_point() +
labs(title = pretty_plot_title())
})
}
shinyApp(ui = ui, server = server)