【问题标题】:Shiny: Making a dynamic pulldown menu that includes an "all rows" option闪亮:制作包含“所有行”选项的动态下拉菜单
【发布时间】:2017-12-27 22:23:18
【问题描述】:

我正在尝试制作一个闪亮的应用程序,它将显示表格的所有行,或允许用户选择行的子集。最终会有多个下拉菜单,但现在我只是想一直完成一项工作。

由于某种原因,应用程序找不到 filter() 语句中的状态。如果下拉菜单未选择任何内容,这可能与允许显示所有行的问题不同。

任何帮助或示例链接将不胜感激。

library(shiny)

ui <- fluidPage(

  titlePanel("Products"),

  sidebarLayout(
    sidebarPanel( 
      uiOutput("statusOutput"),
      sliderInput("modelInput","Model Number", 0,200,c(100,200))
     ),

    mainPanel(
      tableOutput("results")
    )
  )
)

server <- function(input, output) {

  output$statusOutput <- renderUI({
    selectInput("statusInput","Status",
                sort(unique(Product_List$Status)))
  })

  filtered <- reactive ({
    if (is.null (input$statusInput)) {
      return(NULL)
    }

    Product_List %>%
      filter(Status == input$statusInput )
    })

    output$results<-renderTable({
     filtered()
      })
    }

    shinyApp(ui = ui, server = server)

【问题讨论】:

    标签: r dynamic shiny reactive


    【解决方案1】:

    您的代码在我看来没问题,过滤器也按预期工作。尝试使用

    运行您的代码
    Product_List = data.frame(Status=c(1,2,3,4,5))
    

    下面的代码是您描述的所需行为的示例,如果用户没有输入,则选择所有行,否则过滤数据框。我希望这会有所帮助!

    library(shiny)
    library(dplyr)
    
    Product_List = data.frame(Status=c(1,2,3,4,5))
    
    ui <- fluidPage(
    
      titlePanel("Products"),
    
      sidebarLayout(
        sidebarPanel( 
          uiOutput("statusOutput"),
          sliderInput("modelInput","Model Number", 0,200,c(100,200))
        ),
    
        mainPanel(
          tableOutput("results")
        )
      )
    )
    
    server <- function(input, output) {
    
      output$statusOutput <- renderUI({
        selectizeInput("statusInput","Status",
                    sort(unique(Product_List$Status)),multiple=TRUE,options=list(placeholder="All"))
      })
    
      filtered <- reactive ({
        if (length(input$statusInput)==0) {
          return(Product_List)
        }
    
        Product_List %>%
          filter(Status %in% input$statusInput )
      })
    
      output$results<-renderTable({
        filtered()
      })
    }
    
    shinyApp(ui = ui, server = server)
    

    【讨论】:

    • 非常感谢!我仍在处理反应部分,但我确实让顶级过滤器出现了。显然我是新手。
    猜你喜欢
    • 1970-01-01
    • 2021-05-01
    • 2019-11-26
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 2014-10-05
    相关资源
    最近更新 更多