闪亮:制作一个包含 "all rows" 选项的动态下拉菜单

Shiny: Making a dynamic pulldown menu that includes an "all rows" option

我正在尝试制作一个闪亮的应用程序,它将显示 table 的所有行,或允许用户 select 行的子集。最终会有多个下拉菜单,但现在我只想让一个一直有效。

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

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

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)

我觉得你的代码没问题,过滤器也按预期工作。使用

尝试 运行 您的代码
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)