在 R DT 中不受排序影响的行号

Line numbers that are not affected by sorting in R DT

R DT 包中默认显示行号。

dt <- DT::datatable(iris)
dt

但是,这个行号会根据排序的记录而变化。这是正确的举动。 但我需要不受排序影响的行号。是否可以使用 R DT 包执行此操作?

library(DT)

datatable(iris, 
          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();")
) 

我花了很多时间才弄清楚为什么 Index table 上的文档在 R 上不起作用,但事实证明他们使用 shorthand for table 作为 t.,这是一个基于 https://datatables.net/examples/api/counter_columns.html

的工作示例

更改了 JS 部分以允许导出为 csv

 library(DT)
dt <- DT::datatable(iris,options = list(
  columnDefs = list(list(searchable= FALSE,
                         orderable =FALSE,
                         targets= 0)),
  order = list(1,"asc")),
  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;
           table.cell(cell).invalidate('dom');
     });
}).draw();
                  "))
dt