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

RShiny中如何将checkBoxGroup选中项导出为CSV文件

Shiny 复选框选中值导出CSV实现方案

核心逻辑说明

checkboxGroupInput的输入值会直接返回已勾选项对应的choiceValues内容,你只需要搭配Shiny自带的下载按钮和下载处理函数即可完成导出功能,不需要额外做选项名和值的映射。

具体修改步骤

  • 在UI侧的复选框组件下方添加下载按钮,触发导出操作
  • 在server侧编写downloadHandler导出逻辑,读取选中值、整理为表格格式后输出为CSV文件

完整可运行代码

library(shiny)

ui <- fluidPage(
    titlePanel(h1(" Birth Worksheet",align="center")),
    hr(),

    sidebarPanel(  
        titlePanel(h4("Antenatal Risk Factors/Current Pregnancy",align="center")),
        hr(),
        checkboxGroupInput("Antel", "  ",
                           choiceNames =
                             list("Urinary tract infections this pregnancy",
                                  "Urinary tract infections this pregnancy, treated",
                                  "Anemia this pregnancy (HCT < 30/Hgb <10)",
                                  "Hemoglobinopathy this pregnancy",
                                  "Coagulation disorder",
                                  "Rh sensitization",
                                  "Other iso-immunization",
                                  "Biliary/liver disorder(Yes at delivery)",
                                  "Cardiac disease",
                                  "Autoimmune disease",
                                  "Antiphospholipid syndrome",
                                  "Specify collagen vascular disease",
                                  "Asthma",
                                  "Acute or chronic lung disease",
                                  "Renal disorder/disease",
                                  "Renal dialysis or end stage renal disease",
                                  "Thyroid disease",
                                  "Cancer this pregnancy",
                                  "Cancer treatment this pregnancy"
                             ),
                           choiceValues =list("RFC_INFUT","RFC_INFUTTX",
                                               "RFC_ANEMIA",
                                               "RFC_HEMO",
                                               "COAGULATION_DISORDER",
                                               "RFC_RHS",
                                               "RFC_ISO",
                                               "BILARY_LIVE_DISORD",
                                               "RFC_CDDZ",
                                               "RFC_CVDZ",
                                               "RFC_APSY",
                                               "RFC_CVSPEC",
                                               "RFC_ASTH",
                                               "RFC_LGDZ",
                                               "RENAL_DISORDER_DISEASE",
                                               "RFC_RNDY",
                                               "RFC_THYDZ",
                                               "RFC_CA",
                                               "CANCER_TREATMENT" )
        ),
        # 新增下载按钮
        br(),
        downloadButton("export_selected", "导出选中项为CSV", class = "btn-success")
    )
)


server <- function(input, output) {
    # 编写导出逻辑
    output$export_selected <- downloadHandler(
        # 配置导出文件名,带日期后缀避免重名
        filename = function() {
            paste0("选中风险项_", Sys.Date(), ".csv")
        },
        # 配置导出内容
        content = function(file) {
            # 读取当前所有选中的choiceValues值
            selected_values <- input$Antel
            
            # 处理未选中任何项的情况,导出空表避免报错
            if(length(selected_values) == 0){
                export_df <- data.frame(选中项对应值 = character(0))
            }else{
                export_df <- data.frame(选中项对应值 = selected_values)
            }
            
            # 写入CSV,设置编码避免乱码,不导出行名
            write.csv(export_df, file, row.names = FALSE, fileEncoding = "UTF-8")
        }
    )
}

# 运行应用
shinyApp(ui = ui, server = server)

补充说明

  • 如果你需要同时导出选项显示名称(choiceNames)和对应值,可以在server端提前做名称和值的映射表,选中后匹配对应名称一起导出即可
  • 下载按钮的样式、位置可以根据你的页面布局自行调整,放在侧边栏、主面板都可以
  • 若需要导出为Excel格式,只需要把write.csv替换为writexl::write_xlsx,同时修改文件名后缀为.xlsx即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:46:03