r语言 - 闪亮中的反应式数据表,具有可选的过滤功能



我在创建一个简单的 Shiny 应用程序时遇到了双重问题。我知道这个话题在其他几个问题中都有涉及,但是在研究了它们之后,我还没有找到一个可以完全涵盖我的问题的问题。

我想渲染 mtcars 表(默认选项是完整的 32 行(,然后我想对允许多选的齿轮数量应用反应式过滤器。

以下代码在多种方式中不起作用:

  1. 除非设置了齿轮过滤器,否则不会呈现 mtcars 表。相反 - 我在应用程序中收到一条错误消息:"结果的长度必须为 32,而不是 0">

  2. 选择多个档位级别加起来不正确。当我单独选择每个档号时,表格会正确呈现,但是,比方说,当我组合显示档号3和4时,我只返回了10行,这是不正确的。

我提前感谢您的帮助。

ui <- fluidPage(
sidebarLayout(
mainPanel(
selectInput("pickvalue", label = "Gears", mtcars$gear,
selected = NULL, multiple = T)),

tableOutput("tableOut")
)
)

server <- function(input, output, session){

gears <- reactive({
mtcars %>%  filter(gear == input$pickvalue) %>% select(-gear)
})
output$tableOut<- renderTable({gears()
})
}
shinyApp(ui = ui, server=server)

问题的关键是

  1. 输入NULL时(即首次打开应用程序时(创建一个if statement,该只会吐出数据集
  2. 选择多个输入时,需要使用%in%运算符

请参阅下面的代码:

ui <- fluidPage(
sidebarLayout(
mainPanel(
selectInput("pickvalue", label = "Gears", unique(mtcars$gear),
selected = NULL, multiple = T)),

tableOutput("tableOut")
)
)

server <- function(input, output, session){

gears <- reactive({
dat <- mtcars
if (!is.null(input$pickvalue)){dat <- dat %>% filter(gear %in% input$pickvalue)} 
dat <- dat %>% select(-gear)
return(dat)
})
output$tableOut<- renderTable({gears()})
}
shinyApp(ui = ui, server=server)

最新更新