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

如何在R Shiny中通过actionButton修改selectInput的选中值

解决方案

你要实现清空选中的功能,只需要调用Shiny内置的updateSelectInput()方法动态修改选择器的选中值即可,不需要用shinyjs的reset()方法,具体修改逻辑如下:

  • 监听remove_all按钮的点击事件,触发时调用updateSelectInput,将filter_by_project的selected参数设置为你指定的提示文本
  • 补充add_all按钮的点击监听,触发时将选中值设置为所有项目列表

修改后可直接运行的完整代码如下:

library(shiny)
library(shinyjs)
library(tibble)

test <- tibble(project = c("Justin", "Corey","Sibley"),
               april_2021 = c(10, 100, 101),
               may_2021 = c(1, 4, 7))

ui <- fluidPage(
    useShinyjs(),

    sidebarLayout(
        sidebarPanel(
            div(id = "project_inputs",
                selectInput(inputId = "filter_by_project",
                        label = "Filter by Project",
                        choices = c(sort(unique(test$project)), "Please Select at Least One Project"),
                        multiple = TRUE,
                        selected = sort(unique(test$project)))),
            actionButton(inputId = "remove_all", 
                         label = "Unselect All Projects", style = "color: #FFFFFF; background-color: #CA001B; border-color: #CA001B"),
            actionButton(inputId = "add_all", 
                         label = "Select All Projects", style = "color: #FFFFFF; background-color: #CA001B; border-color: #CA001B"),
        ),

        mainPanel(
        )
    )
)

server <- function(input, output, session) { # update类方法必须传入session参数才能正常调用
    
    # 清空所有选中,切换为提示文本
    observeEvent(input$remove_all, {
        updateSelectInput(session,
                          inputId = "filter_by_project",
                          selected = "Please Select at Least One Project")
    })
    
    # 全选所有项目
    observeEvent(input$add_all, {
        updateSelectInput(session,
                          inputId = "filter_by_project",
                          selected = sort(unique(test$project)))
    })
}

shinyApp(ui = ui, server = server)

补充说明:如果你后续需要判断用户是否选中了有效项目,只要判断input$filter_by_project不等于提示文本即可。

内容的提问来源于stack exchange,提问作者J.Sabree

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 02:54:02