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

如何在R中创建动态表格?是否需使用Shiny包?

动态实时更新表格的实现方案

要实现你描述的随数据变化自动刷新、滚动的动态表格效果,Shiny是最适合的工具——它能轻松构建交互式Web应用,支持数据实时推送与UI组件的动态更新。

以下是结合你的示例数据的完整实现方案:

1. 安装并加载依赖包

需要用到shiny(构建交互应用)、dplyr(数据处理)、DT(生成可滚动的交互式表格):

install.packages(c("shiny", "dplyr", "DT"))
library(shiny)
library(dplyr)
library(DT)

2. 完整Shiny应用代码

这个示例模拟数据实时新增的场景,同时让表格自动滚动到最新行,匹配你需要的动图效果:

ui <- fluidPage(
  titlePanel("实时更新动态表格"),
  DTOutput("dynamic_table")
)

server <- function(input, output, session) {
  # 初始化你的示例数据
  current_data <- reactiveVal(tibble(
    Date_Time = c("2023-06-14 09:43:06", "2023-06-14 09:43:09", "2023-06-14 09:43:12", "2023-06-14 09:43:16", "2023-06-14 09:43:19"),
    Thermal_Energy_Intensity = c(407.3212, 407.3212, 407.3212, 407.3212, 407.3212),
    Specific_Heat_Capacity = c(223282.7, 223282.7, 223282.7, 223282.7, 223282.7),
    Heat_Absorption_Capacity = c(386245.8, 386245.8, 386245.8, 386245.8, 386245.8)
  ))
  
  # 模拟数据实时更新:每3秒新增一行数据
  observe({
    invalidateLater(3000, session)
    new_row <- tibble(
      Date_Time = Sys.time() %>% as.character(),
      Thermal_Energy_Intensity = runif(1, 400, 410),
      Specific_Heat_Capacity = runif(1, 220000, 225000),
      Heat_Absorption_Capacity = runif(1, 380000, 390000)
    )
    current_data(bind_rows(current_data(), new_row))
  })
  
  # 渲染可滚动的动态表格
  output$dynamic_table <- renderDT({
    datatable(
      current_data(),
      options = list(
        scrollY = "300px",
        scrollCollapse = TRUE,
        paging = FALSE,
        ordering = FALSE,
        info = FALSE
      )
    )
  }, server = FALSE)
  
  # 数据更新后自动滚动到表格底部
  observeEvent(current_data(), {
    session$sendCustomMessage("scrollToBottom", list())
  })
}

shinyApp(ui, server)

关键细节说明

  • reactiveVal用于存储动态变化的数据,每次新增数据时自动更新
  • invalidateLater(3000, session)设置每3秒触发一次数据更新,模拟真实场景下的数据源推送
  • DT包的datatable通过scrollY固定表格高度,实现超出内容自动滚动的效果
  • 最后的observeEvent确保每次数据更新后,表格自动滚动到最新行,与目标动图效果一致

非Shiny场景的替代方案

如果是在静态文档(如R Markdown)中需要类似动画效果,可使用animate结合kable实现预渲染动画,但这种方式无法响应真实数据的实时变化。只有Shiny能实现真正的动态实时更新,适配数据随时间或外部输入变化的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:05:07