首页 > 解决方案 > 如何抑制 DT 中仅一列的过滤器?

问题描述

我正在使用DT从 CSV 呈现数据表。一个字段包含 URL,在其中搜索起来非常麻烦。我想禁用对 URL 列的过滤或允许搜索该列是否有任何数据(所以是否有链接?)

我什至不确定从哪里开始将过滤器限制在某些列中。我认为可能添加targets = c(0,1)到过滤器调用会起作用,但它没有任何影响。

这就是我现在所拥有的:


mydf <- data.frame(
  name=c("ABC","DEF","GHI","","MNO","PQR"), 
  value=1000:1005, 
  link=c("https://www.example.com/abc", "https://www.example.com/def", "https://www.example.com/ghi","https://www.example.com/jkl", "https://www.example.com/mno", "https://www.example.com/pqr"))

datatable(mydf, options = list(columnDefs = list(
  list(targets = 2, render = JS(
      "function(data, type, full, meta) {",
      "return type === 'display' ?",
      "'<a href=\"'+data+'\">linq</a>' : data;",
      "}")),
  list(targets = c(0,1), className = 'dt-center'),
  list(targets = 2, className = 'dt-right')
  )),
  rownames = FALSE,
  filter = list(position = 'bottom', clear = FALSE))

标签: rr-markdowndt

解决方案


您可以searchable = FALSE为特定列添加。

DT::datatable(mydf, options = list(columnDefs = list(
  list(targets = 2, render = JS(
      "function(data, type, full, meta) {",
      "return type === 'display' ?",
      "'<a href=\"'+data+'\">linq</a>' : data;",
      "}")),
  list(className = 'dt-center'),
  list(targets = 2, className = 'dt-right', searchable = FALSE)
   )),rownames = FALSE, 
filter = 'bottom')

推荐阅读