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

Shiny应用点击actionButton向本地存储CSV文件新增列实现问题

Shiny按钮点击逐列新增数据写入CSV实现方案

原代码存在以下明显问题:

  • UI仅定义了3个功能按钮,服务端却额外监听了15个不存在的按钮,逻辑完全不匹配需求
  • reactiveValues初始化时重复定义了col3,后续数据拼接时还把Bet5列错误命名为Bet4
  • 原逻辑是按轮次绑定按钮组,和「任意按钮每点击1次新增1列,最多累计6次」的要求完全不符

修正后可直接运行的代码

library(shiny)
library(shinyjs)
library(DT)

ui <- fluidPage(
  id="main",
  title="风险与模糊性",
  useShinyjs(),
  fluidRow(
    column(12, align='center',
           hr("请选择A瓮、B瓮或包含A和B的袋子:")
    )
  ), 
  DTOutput("t1"),
  fluidRow(
    wellPanel(
      splitLayout(cellWidths = c("33%", "33%", "33%"),
                  column(12,align="center",actionButton("opt_a", label = "Je choisis option A")),
                  column(12,align="center",actionButton("opt_ab", label = "Je choisis le sac avec A et B")),
                  column(12,align="center",actionButton("opt_b", label = "Je choisis option B"))
      )
    )
  )
)

server <- function(input, output, session){
  # 响应式变量:记录累计点击次数、最终存储的数据框
  rv <- reactiveValues(
    click_count = 0,
    result_df = data.frame()
  )
  # 按钮和对应文本的映射
  btn_map <- list(
    "opt_a" = "Je choisis option A",
    "opt_ab" = "Je choisis le sac avec A et B",
    "opt_b" = "Je choisis option B"
  )
  # 统一监听三个按钮的点击事件
  lapply(names(btn_map), function(btn_id){
    observeEvent(input[[btn_id]], {
      # 最多允许6次点击
      if(rv$click_count >=6) return()
      rv$click_count <- rv$click_count + 1
      # 新增列
      new_col_name <- paste0("Bet", rv$click_count)
      rv$result_df[[new_col_name]] <- btn_map[[btn_id]]
      # 写入CSV
      write.csv(rv$result_df, file = "solution.csv", row.names = F)
      # 满6次点击后禁用所有按钮
      if(rv$click_count ==6){
        lapply(names(btn_map), function(id) disable(id))
      }
    })
  })
  # 页面实时展示当前写入的数据
  output$t1 <- renderDT({
    rv$result_df
  })
}

shinyApp(ui = ui, server = server)

功能说明

  • 每次点击任意按钮,会自动新增一列BetX(X从1到6),列值为点击按钮的对应文本
  • 累计点击满6次后按钮会自动禁用,避免超量操作
  • 每次点击后会自动将最新数据写入工作目录下的solution.csv,和要求的输出格式完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:48:01