Ршины, имеющие только один фильтр - PullRequest
0 голосов
/ 06 марта 2020

У меня есть приложение Shiny Dashboard, которое показывает простой сюжет. Я фильтрую информационный фрейм, который заполняет график, используя 2 разных фильтра.

Я хочу, чтобы приложение могло иметь его так, чтобы:

  1. Я выбрал значение в фильтре 1
  2. Если теперь я фильтрую значение для фильтра 2, то фильтр 1 сбрасывается до его исходного значения
  3. В основном я разрешаю только 1 фильтр за раз

Спасибо!

1 Ответ

1 голос
/ 07 марта 2020

Вы хотите использовать updateSelectInput, а затем использовать observeEvent, чтобы перехватывать при изменении значения фильтра.

library(shiny)
library(shinydashboard) 

rm(list=ls())

#####/UI/####

header <- dashboardHeader()
sidebar <- dashboardSidebar()
body <- dashboardBody(
  selectInput(inputId = "filter1", label = "Filter 1", selected = "ALL",
              choices = c("ALL", "Bananas", "Apples", "Oranges")
  ),
  selectInput(inputId = "filter2", label = "Filter 2", selected = "ALL",
              choices = c("ALL", "Carrots", "Peas", "Celery")
  )
)

ui <- dashboardPage(header, sidebar, body)

#####/SERVER/####
server <- function(session, input, output) { 

  observeEvent(input$filter2,{
    if (input$filter2 != "ALL") {
      updateSelectInput(session, "filter1", selected = "ALL")
      }
  })

  observeEvent(input$filter1,{
    if (input$filter1 != "ALL") {
      updateSelectInput(session, "filter2", selected = "ALL")
    }
  })

  }

shinyApp(ui, server)
...