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

如何在R Shiny中使用selectizeGroupUI设置默认筛选选项

设置selectizeGroupUI的默认选中项

我完全理解你的困扰——默认全选对于大数据集来说确实太影响性能和用户体验了,想要指定初始筛选组合来给用户做示例是个很合理的需求。其实selectizeGroupServer模块本身就支持设置默认选中值,你不需要在UI层做修改,只需要在调用模块的时候加上selected参数就行。

核心解决思路

在调用selectizeGroupServer模块时,添加selected参数,传入一个键值对列表:键对应你在vars里声明的变量名,值就是你想要默认选中的选项内容。这样模块初始化时就会自动选中指定选项,而不是全选所有内容。

修改后的完整代码

library(shinyWidgets)
library(DT)
library(dplyr)
library(tidyr)

# 模拟你的输入数据集
tf <- tibble(
  var_1 = c(rep("red",3), rep("blue",3), rep("green",3)),
  var_2 = c(rep("table1",3), rep("table2",3), rep("table3",3)),
  var_3 = c(rep("column1",3), rep("column2",3), rep("column3",3))
)

shinyApp(
  ui = pageWithSidebar(
    headerPanel("Conditional Filters"),
    sidebarPanel(
      selectizeGroupUI(
        id = "my-filters",
        inline = FALSE,
        params = list(
          var_one = list(inputId = "var_1", title = "Select variable 1", placeholder = 'select'),
          var_two = list(inputId = "var_2", title = "Select variable 2", placeholder = 'select')
        )
      )
    ),
    mainPanel(
      DT::dataTableOutput("table")
    )
  ),
  server = function(input, output, session) {
    res_mod <- callModule(
      module = selectizeGroupServer,
      id = "my-filters",
      data = tf,
      vars = c("var_1", "var_2"),
      # 关键:添加默认选中项配置
      selected = list(var_1 = "red", var_2 = "table1")
    )
    output$table <- DT::renderDataTable({
      req(res_mod())
      mytable<-res_mod() %>% 
        dplyr::mutate(n = "Yes") %>% 
        mutate(row_num = 1:n()) %>% 
        tidyr::pivot_wider(names_from = var_3, values_from = n, values_fill = list(n = "No"))%>% 
        select(-row_num)
      mytable<-DT::datatable(mytable, filter= 'top',options = list(order=list(0,'asc'), dom='t', pageLength= 100, autoWidth = TRUE),rownames = FALSE)
      formatStyle(mytable, columns = NULL, fontWeight = styleEqual(c('No', 'Yes'), c('normal', 'bold')))
    })
  },
  options = list(height = 500)
)

效果说明

修改后,应用启动时会自动选中var_1 = red和var_2 = table1,默认只显示对应的3行数据,而不是全部9行。用户后续仍然可以自由调整筛选器选项,完全不影响交互功能。

需要注意的是:selected里的选项必须是对应变量在数据中实际存在的值,否则模块会忽略无效的默认值,回到全选状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:49:08