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

基于DataFrame列创建含主选项与子选项的pickerInput组件

动态生成带层级选项的pickerInput组件

需求

基于给定的DataFrame,创建pickerInput组件,以Dimension作为一级选项,Subdimension作为对应二级选项;当前仅包含environmental维度,后续新增维度时代码需自动适配。

原始数据

df <- structure(list(Dimension = c("environmental", "environmental", 
"environmental", "environmental", "environmental", "environmental", 
"environmental", "environmental", "environmental", "environmental", 
"environmental", "environmental", "environmental", "environmental", 
"environmental", "environmental", "environmental", "environmental", 
"environmental", "environmental", "environmental", "environmental", 
"environmental", "environmental", "environmental", "environmental", 
"environmental", "environmental", "environmental", "environmental", 
"environmental", "environmental", "environmental", "environmental", 
"environmental", "environmental", "environmental", "environmental", 
"environmental", "environmental", "environmental", "environmental"
), Subdimension = c("A", "A", "A", "A", "A", "A", "A", "A", "A", 
"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "C", "C", "C", 
"C", "C", "C", "C", "C", "C", "C")), row.names = c(NA, -42L), class = c("tbl_df", 
"tbl", "data.frame"))

实现步骤

1. 生成嵌套选项列表

先对数据去重并按维度分组,提取每个维度对应的唯一子维度,构建符合pickerInput要求的嵌套列表:

library(dplyr)
library(purrr)

# 处理数据生成层级选项
choices_list <- df %>%
  distinct(Dimension, Subdimension) %>%  # 去除重复的维度-子维度组合
  group_split(Dimension) %>%             # 按维度分组
  set_names(map_chr(., ~first(.$Dimension))) %>%  # 给列表命名为维度名称
  map(~.$Subdimension)                   # 提取每个维度下的子维度

2. 创建pickerInput组件

用生成的choices_list创建带层级的选择器:

library(shinyWidgets)

pickerInput(
  inputId = "dimension_subdim_picker",
  label = "选择维度及子维度",
  choices = choices_list,
  multiple = TRUE,
  options = list(`actions-box` = TRUE)
)

说明

  • 代码会自动识别DataFrame中的所有Dimension,后续新增维度时,只需更新DataFrame,无需修改pickerInput的配置
  • distinct保证每个子维度在对应维度下只出现一次,避免重复选项
  • actions-box = TRUE开启全选/取消全选的操作按钮,提升多选体验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 00:20:45