虹膜中的动态过滤器

Dynamic filter in iris

我已经创建了两个不同的过滤器,我想开发一个动态过滤器。 如果数据集没有一个值,second/first 过滤器必须从过滤器中消除另一个值。 (是一种循环方式,也许分层更好) 我需要使用 observeEvent 吗?但是在哪里呢?

例如,我使用了 iris 数据集,如果我 select Species setosa 我只想看到 0.1、0.2、0.3 等

library(shiny)
library(dplyr)
library(DT)
library(ggplot2)


shinyUI (fluidPage(
  navbarPage("My Application",

             tabPanel("First",
                      tabPanel("Per Famiglia Prodotto",
                               selectInput("Specie", "Per specie", choices = unique(iris$Species)),
                               
                               tabPanel("Classe2",
                                        selectInput("classe2", "Classe2", choices = unique(iris$Petal.Width)),
                                        
  
                               )
                      )
             )
  )
)
)



shinyServer(
  function(input, output, session) {
    iris

    

classe <- reactive({
filter(iris, iris$Species == input$classe)})

observeEvent(classe(), {
  choices <- unique(classe()$Petal.Width)
  updateSelectInput(inputId = "classe2", choices = choices) 
})
   classe2 <- reactive({
     req(input$classe2)
     filter(Dato, Petal.Width == input$classe2)
   })

试试这个

library(shiny)
library(dplyr)
library(DT)
library(ggplot2)

ui <- fluidPage(
  navbarPage("My Application",
             tabPanel("First",
                      selectInput("Specie", "Per specie", choices = unique(iris$Species)),
                      selectInput("classe2", "Classe2", choices = unique(iris$Petal.Width)),
                      DTOutput("t1")
             )
  )
)

server <-  function(input, output, session) {
  
    classe <- reactive({dplyr::filter(iris, iris$Species == input$Specie)})
    
    observeEvent(classe(), {
      choices <- unique(classe()$Petal.Width)
      updateSelectInput(session, inputId = "classe2", choices = choices) 
    })
    
    classe2 <- reactive({
      req(input$classe2)
      filter(classe(), Petal.Width == input$classe2)
    })
    output$t1 <- renderDT(classe2())

}

shinyApp(ui, server)