虹膜中的动态过滤器
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)
我已经创建了两个不同的过滤器,我想开发一个动态过滤器。 如果数据集没有一个值,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)