删除最终用户对列进行排序的能力

Remove end users ability to sort upon a column

我有一个很大的数据表对象,我想限制某些列的可排序性。我想我必须使用 options 参数,但我对 JavaScript 的了解还没有达到我知道如何将它与函数参数集成的程度。

我以下面的代码为例:

library(DT)

# Create Columns and dataframe
letters <- c("a", "b", "c", "d")
numbers <- c(1, 2, 3, 4)
words <- c("the", "quick", "brown", "fox")
df <- data.frame(letters, numbers, words, stringsAsFactors = FALSE)

# Create Data Table
htmlDf <- datatable(df, rownames = FALSE)

我还有以下代码片段,我试图将其添加到选项参数中。小代码块来自https://datatables.net/reference/option/columns.orderable.

    $('#example').dataTable( {
      "columns": [
        {null,
         "orderable": false },
         null,
                ]
    } );

为了这个问题的目的,假设我想删除对 "numbers" 列进行排序的能力。

谢谢!

注意:这不适用于 Shiny App。

site for the R package DT 提供了一些很棒的教程,介绍如何将 javascript 选项从 datatables 转换为 R 语法。

本质上,您所做的是将嵌套的命名列表传递到 datatable 函数的 options 参数中,这些列表反映了 JavaScript 代码的结构。所以在你的情况下,你想这样做:

htmlDf <- datatable(df,
                    rownames = FALSE,
                    options = list(
                        columnDefs = list(
                            list(orderable = F,
                                 targets = c(1))
                            )
                        )
                    )

这很好地将 orderable = FALSE 条件应用于第 1 列。请注意,您必须使用 JavaScript 样式 0 索引而不是 R 样式 1 索引: