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

R Shiny中如何将DT数据表格用户当前浏览页码存入变量

实现方案

DT包在Shiny运行时会自动为每个渲染的数据表格生成内置的输入属性,其中[表格输出ID]_page就对应用户当前浏览的页码,第一页的值为1。你给出的示例中表格输出ID为preview,因此直接读取input$preview_page即可获取当前页码。

完整修改示例代码

library(shiny)
library(tidyverse)
library(datasets)
library(DT)

data <- as.data.frame(USArrests)
ui <- fluidPage(
    dataTableOutput("preview"),
    # 仅作为演示输出当前页码,不需要可直接删除
    verbatimTextOutput("current_page")
)

server <- function(input, output) {
    # 定义变量x存储页码,可根据需求调整x的作用域
    x <- reactiveVal(1)
    
    output$preview<- renderDataTable(
        datatable(data, options = list(searching = T, pageLength = 10, lengthMenu = c(5,10,15, 20), scrollY = "600px", scrollX = T ))
    )
    
    # 监听页码变化,更新x的值
    observeEvent(input$preview_page, {
        x(input$preview_page)
        # 如果需要存为非响应式普通变量,直接写 x <<- input$preview_page 即可,注意作用域适配
    })
    
    # 演示输出当前x的值,不需要可直接删除
    output$current_page <- renderPrint({
        paste0("当前页码:", x())
    })
}

shinyApp(ui = ui, server = server)

补充说明

  • 如果只需要在响应式逻辑里使用页码,直接调用input$preview_page即可,不需要额外存为x变量
  • 如果需要将页码存为全局普通变量,将赋值语句改为x <<- input$preview_page即可,注意<<-为全局赋值符号,要根据你的变量作用域需求调整使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 20:15:00