自动行号(过滤DT后闪亮)

时间:2016-02-19 10:25:42

标签: r shiny dt

我希望在过滤数据表后再次从1,2,3 ...开始rownames计数。有可能吗?

这是一个简单的代码:

library(shiny)
library(DT)
library(ggplot2)

x <- as.numeric(1:1000)
y <- as.numeric(1:1000)
data <- data.frame(x,y)

shinyApp(
  ui = fluidPage(dataTableOutput('tbl'),
                 plotOutput('plot1')),
  server = function(input, output) {
    output$tbl = renderDataTable({
      datatable(data, filter = "top", rownames=TRUE,options = list(
        pageLength = 300, lengthMenu = c(100,200,300,400,500,600)
      ))
    })
    output$plot1 = renderPlot({
      filtered_data <- input$tbl_rows_all
      ggplot(data = data[filtered_data, ], aes(x = x,y = y)) + geom_line()
    })
  }
)

所以作为一个例子,如果我过滤列x以获得50 -...的值,我希望rownames不要(在这种情况下)开始为50,51 ..,但是作为1 ,2 ...

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

Datatables个文档举例说明了如何here。您可以使用javascript代码和datatable回调参数:

   output$tbl = renderDataTable({
                        datatable(data, filter = "top", rownames=TRUE,options = list(
                                pageLength = 300, lengthMenu = c(100,200,300,400,500,600)
                        ),
                        callback=JS("table.on( 'order.dt search.dt', function () {
                                table.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
                                      cell.innerHTML = i+1;});}).draw();"))
                })

这只会更改显示的HTML值,不会更改数据集的实际rownames