闪亮:制作一个包含 "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)
我正在尝试制作一个闪亮的应用程序,它将显示 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)