将 TableTools 用于 R Shiny 中的 DataTables 用于 renderDataTable

Posted

技术标签:

【中文标题】将 TableTools 用于 R Shiny 中的 DataTables 用于 renderDataTable【英文标题】:Use TableTools for DataTables in R Shiny for renderDataTable 【发布时间】:2014-05-21 14:18:24 【问题描述】:

对于这个问题,我使用的是此处的 R Shiny 教程示例:

http://rstudio.github.io/shiny/tutorial/#datatables

运行本教程中的代码会在以下 URL 处呈现应用程序

http://glimmer.rstudio.com/yihui/12_datatables/

我想知道的是,一旦该数据表被渲染,我们可以使用 R Shiny 中的 renderDataTable() 函数内置的功能来搜索它,但是是否可以使用renderDataTable() 函数?

例如,如果我在数据表搜索栏中输入“非常好”,则仅显示“剪切”字段中读取“非常好”的记录。然后我将如何下载该数据集?

如何在这段代码中调用 TableTools.js 复制、打印、保存等按钮?

谢谢!

【问题讨论】:

我也有兴趣让它发挥作用。我在以下网址中看到过它,但没有设法让它工作:gist.github.com/bearloga/8327428 【参考方案1】:

您需要链接到正确的库版本。可以在 http://cdnjs.com/libraries/datatables 找到指向 data.table 1.9.4 的链接。 http://cdnjs.com/libraries/datatables-tabletools上的 tabletools 2.1.5 链接

library(shiny)
library(ggplot2)
runApp(
  list(ui = basicPage(
    h1('Diamonds DataTable with TableTools'),
    tagList(
      singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables/1.9.4/jquery.dataTables.min.js',type='text/javascript'))),
      singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/TableTools.min.js',type='text/javascript'))),
      singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/ZeroClipboard.min.js',type='text/javascript'))),
      singleton(tags$head(tags$link(href='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/css/TableTools.min.css',rel='stylesheet',type='text/css'))),
      singleton(tags$script(html("if (window.innerHeight < 400) alert('Screen too small');")))
    ),
    dataTableOutput("mytable")
  )
  ,server = function(input, output) 
    output$mytable = renderDataTable(
      diamonds[,1:6]
    , options = list(
      "sDom" = 'T<"clear">lfrtip',
      "oTableTools" = list(
        "sSwfPath" = "//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/swf/copy_csv_xls.swf",
        "aButtons" = list(
          "copy",
          "print",
          list("sExtends" = "collection",
               "sButtonText" = "Save",
               "aButtons" = c("csv","xls")
          )
        )
      )
    )
    )
  )
)

【讨论】:

以上是关于将 TableTools 用于 R Shiny 中的 DataTables 用于 renderDataTable的主要内容,如果未能解决你的问题,请参考以下文章

带有 TableTools 和其他扩展的 R 闪亮数据表

使用 Shiny 时,包 rcpp 不适用于(R 版本 2.15.2)

使用 R/Shiny 创建动态数量的输入元素

如何在 r shiny 中使用 JS 数据表 API?

在R Shiny中,如何用observe替换observeEvent?

如何使用具有多个输出的 R Shiny moduleServer