单个列搜索(选择输入)在 Shiny 中呈现数据表()

Individual column searching (select inputs) renderDatatable() in Shiny

本文关键字:数据表 Shiny 选择 输入 单个列 搜索      更新时间:2023-09-26

我正在尝试在闪亮的应用程序中使用数据表进行单个列搜索(选择输入)

在此链接之后,http://www.datatables.net/examples/api/multi_filter_select.html 我尝试将必要的 javascript 代码添加到我闪亮的应用程序服务器的 R 代码中。R 文件。

据我所知,默认情况下renderDataTable有单独的搜索框,我使用searching = FALSE关闭了这些搜索框,然后在上面提到的链接中将js函数作为我的renderDataTable代码中的回调传递。

callback = "initComplete: function (oTable) {
  var api = this.api();
  api.columns().indexes().flatten().each( function ( i ) {
    var column = api.column( i );
    var select = $('<select><option value='"'"></option></select>')
    .appendTo( $(column.header()).empty() )
    .on( 'change', function () {
      var val = $.fn.dataTable.util.escapeRegex(
        $(this).val()
      );
      column
      .search( val ? '^'+val+'$' : '', true, false )
      .draw();
    } );
    column.data().unique().sort().each( function ( d, j ) {
      select.append( '<option value='"'+d+''">'+d+'</option>' )
    } );
  } );
}"

当我使用上述代码运行应用程序时,Shiny 应用程序中不会反映任何更改。由于I()块内的各种引号,我遇到了错误,我通过添加转义序列解决了(或没有)。

以防万一其他人也在寻找这个:

在这里,您将找到有关对特定列使用筛选器的示例:

http://shiny.rstudio.com/gallery/datatables-options.html

服务器。R

在这种情况下,只有我的第 1 列底部有一个搜索框。

   output$mytable <- renderDataTable(df, options = list(
                        columnDefs = list(list(targets = c(2,3, 4,5,6,7) - 1, searchable = FALSE)),
                        pageLength = 10
                ))