You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shiny中selectInput选全部院校时dplyr::filter返回全量数据的问题

解决Shiny中selectInput选择“全部院校”时返回所有数据的问题

你的问题出在filter条件上:当选择"All Universities"(对应值为"all")时,struc_uni == input$university会因为struc_uni列里没有"all"这个值,过滤掉所有行,导致表格无数据。

两种可行的修改方案:

方案1:使用逻辑或表达式(简洁推荐)

直接在filter里添加判断,当选择"all"时保留所有行,否则匹配对应院校:

output$headcountTable <- function(){
 enroll_report |>
  dplyr::filter(input$university == "all" | struc_uni == input$university) |> # 修改这一行
  dplyr::select(-struc_uni) |>
  dplyr::select(-struc_code) |>
  kbl(booktabs = T,
    col.names = c("Campus", 
                 "Fall 2021", 
                 "Fall 2022",
                 "Change",
                 "%",
                 "Fall 2021", 
                 "Fall 2022",
                 "Change",
                 "%"),
    caption = "holder text") |>
  add_header_above(c("", "Headcount" = 4, "Credit Hours" = 4)) |>
  kable_styling("striped", 
           full_width = T, 
           position = "left", 
           font_size = 12)
}

方案2:使用if-else分支判断

如果觉得逻辑更清晰,也可以用分支来处理:

output$headcountTable <- function(){
  filtered_data <- if(input$university == "all"){
    enroll_report
  } else {
    dplyr::filter(enroll_report, struc_uni == input$university)
  }
  
  filtered_data |>
  dplyr::select(-struc_uni) |>
  dplyr::select(-struc_code) |>
  kbl(booktabs = T,
    col.names = c("Campus", 
                 "Fall 2021", 
                 "Fall 2022",
                 "Change",
                 "%",
                 "Fall 2021", 
                 "Fall 2022",
                 "Change",
                 "%"),
    caption = "holder text") |>
  add_header_above(c("", "Headcount" = 4, "Credit Hours" = 4)) |>
  kable_styling("striped", 
           full_width = T, 
           position = "left", 
           font_size = 12)
}

说明:

  • 方案1的逻辑是:只要满足「选择了全部院校」或者「院校匹配」其中一个条件,就保留该行,这样选"all"时所有行都会被保留。
  • 方案2先提前过滤数据,逻辑更直观,适合后续需要对过滤后的数据做更多操作的场景。

内容的提问来源于stack exchange,提问作者Kevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 14:54:20