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

R Shiny自定义用户复选框筛选功能实现需求

实现基于复选框选择行的Shiny自定义表格

要实现通过复选框选择车型(行)来生成自定义表格,你可以用checkboxGroupInput替代原代码中的selectInput,并在服务器端根据选中的行名过滤数据集。以下是针对mtcars数据集的完整实现:

完整代码示例

library(shiny)

if (interactive()) {
    shinyApp(
        ui = fluidPage(
            # 用复选框组选择车型,选项为mtcars的行名(车型)
            checkboxGroupInput(
                inputId = "selected_models",
                label = "选择要显示的车型:",
                choices = rownames(mtcars),
                # 默认选中你提到的几个品牌车型
                selected = rownames(mtcars)[grepl("Mazda|Fiat|Toyota|Dodge", rownames(mtcars))]
            ),
            tableOutput("custom_table")
        ),
        server = function(input, output) {
            output$custom_table <- renderTable({
                # 根据选中的车型筛选行,若未选则显示全部
                if (length(input$selected_models) == 0) {
                    mtcars
                } else {
                    mtcars[input$selected_models, , drop = FALSE]
                }
            }, rownames = TRUE)
        }
    )
}

关键修改说明

  • UI部分:使用checkboxGroupInput创建车型选择框,choices参数直接传入mtcars的行名(即车型名称),selected参数预设了你指定的马自达、菲亚特、丰田和道奇相关车型。
  • Server部分:通过mtcars[input$selected_models, , drop = FALSE]筛选选中的行,drop = FALSE确保即使只选一行也保持数据框格式;同时添加了空选择的处理逻辑,默认显示全部数据。

如果只想显示特定品牌的车型选项(而非全部mtcars车型),可以修改choices参数:

# 仅保留马自达、菲亚特、丰田和道奇的车型选项
target_models <- rownames(mtcars)[grepl("Mazda|Fiat|Toyota|Dodge", rownames(mtcars))]
checkboxGroupInput(
    inputId = "selected_models",
    label = "选择要显示的车型:",
    choices = target_models,
    selected = target_models
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:50:40