闪亮的应用程序 - 条件选择

时间:2017-08-23 11:26:21

标签: r shiny

我有一个基本的Shiny应用程序,显示结果(4列),可以过滤掉一些结果。

这些列通过层次结构互连:

  • ProductCategory(家具,食品......)
  • ProductType(table,oranges,apples,...)
  • ProductColor(黄色,绿色,......)

我正在使用的数据表如下所示

产品类别---产品类型--- ProductColor

当我选择一个产品类别时,让我们说水果,我仍然可以在产品类型选择框中看到实例“表格”。因此,我想限制我在一个方框中看到的内容与我在另一个方框中选择的内容。那可能吗?我对R和Shiny很陌生,我不确定我是否使用正确的术语来解决这个问题。

library(shiny)
library(ggplot2)
library(shinydashboard)
library(DT)


ui<-fluidPage(
    titlePanel("Product catalogue"),

    # Create a new Row in the UI for selectInputs
    fluidRow(
      column(4,
             selectInput("ProductCategory",
                         "ProductCategory:",
                         c("All",
                           unique(as.character(Prod$ProductCategory))))
      ),
      column(4,
             selectInput("ProductType",
                         "ProductType:",
                         c("All",
                           unique(as.character(Prod$ProductType))))
      ),
      column(4,
             selectInput("ProductColor",
                         "ProductColor:",
                         c("All",
                           unique(as.character(Prod$ProductColor))))
      )
    ),
    # Create a new row for the table.
    fluidRow(
      DT::dataTableOutput("table")
    ))
server<- function(input, output) {

    # Filter data based on selections
    output$table <- DT::renderDataTable(DT::datatable({
      data <- Prod
      if (input$ProductCategory!= "All") {
        data <- data[data$ProductCategory== input$ProductCategory, ]
      }
      if (input$ProductType!= "All") {
        data <- data[data$ProductType== input$ProductType,]
      }
      if (input$ProductColor!= "All") {
        data <- data[data$ProductColor == input$ProductColor,]
      }
      data
    })

修复了以前的代码与this solution

的集成

0 个答案:

没有答案