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

如何用shinyWidgets包的pickerInput函数对变量分组去重?

解决ShinyWidgets中pickerInput重复选项的问题

我懂你想要的效果——用shinyWidgets的pickerInput实现无重复选项,同时保留它好用的全选/取消全选功能对吧?其实只需要对A列的选项做个简单的去重处理就行,很容易解决!

问题原因

你之前直接把x$A传入choices参数,但A列里有重复的x、y、z值,所以pickerInput会把每一条重复的记录都当成独立选项显示,这就导致了重复项的问题。

解决方案

用基础R的unique()函数提取A列的唯一值,这样就能得到不重复的x、y、z选项了。如果想要选项按字母顺序排列,还可以搭配sort()函数让界面更整齐。另外,为了确保全选/取消全选按钮正常显示,我们可以明确设置options参数。

完整代码示例

library(shiny)
library(shinyWidgets)

# 读取你的数据(注意分隔符是;,请确保文件路径正确)
x <- read.csv("Example.csv", sep=";")

ui <- fluidPage(
  pickerInput(
    inputId = "x", 
    label = "Pick :", 
    # 提取A列的唯一值并排序,避免重复选项
    choices = sort(unique(x$A)), 
    multiple = TRUE,
    # 明确开启全选/取消全选功能按钮
    options = list(`actions-box` = TRUE)
  )
)

server <- function(input, output) {}

shinyApp(ui, server)

额外提示

如果你的A列后续可能出现NA值,可以用unique(x$A[!is.na(x$A)])来过滤掉空值,避免选项里出现NA。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:11:05