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

如何为R Shiny DT表格添加重置按钮并置于保存按钮旁?

为DT表格添加重置按钮(置于保存按钮旁)

你需要在DT表格的按钮栏中添加一个重置按钮,点击后恢复到初始的默认表格,以下是修改后的完整代码:

library(shiny)
library(DT)
library(dplyr)

# 单独定义初始表格,方便重置时直接调用
initial_df <- data.frame(
  x = seq(1:12),
  y = LETTERS[1:12]
)

ui <- fluidPage(
  fileInput("upload", NULL, accept = c(".csv")),
  DTOutput("head")
)

server <- function(input, output, session) {
  
  rv <- reactiveValues(
    dataframe = initial_df  # 初始化使用预设的初始表格
  )
  
  # 监听文件上传,更新表格
  observe({
    req(input$upload)
    ext <- tools::file_ext(input$upload$name)
    rv$dataframe <- switch(ext,
                           csv = read.csv(input$upload$datapath),
                           NULL)
  })
  
  # 监听重置按钮点击,恢复初始表格
  observeEvent(input$reset_table, {
    rv$dataframe <- initial_df
  })
  
  output$head <- renderDT({
    validate(need(!is.null(rv$dataframe), "请上传.csv格式文件"))
    
    datatable(rv$dataframe, extensions = 'Buttons',
              options = list(
                dom = 'Bfrtip',
                buttons = list(
                  # 保存按钮
                  list(extend = 'csv',
                       filename = '//public/comments/comments.csv',
                       text = 'Save'),
                  # 重置按钮:自定义action类型,绑定Shiny输入事件
                  list(extend = "action",
                       text = "重置",
                       className = "btn btn-default",  # 和保存按钮样式统一
                       action = DT::JS("function() { Shiny.setInputValue('reset_table', Math.random()); }")
                  )
                )
              ))
  })
}

shinyApp(ui, server)

关键改动说明:

  • 单独定义initial_df存储初始表格数据,重置时直接复用,避免重复创建
  • 在DT的buttons列表中新增一个自定义按钮,类型为action,通过JS触发Shiny的reset_table输入事件
  • 服务器端添加observeEvent监听reset_table事件,将rv$dataframe重置为初始表格
  • 给重置按钮设置className = "btn btn-default",保证和保存按钮样式一致

当前版本截图:
当前版本截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:51:16