7

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

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

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

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

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

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

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

谢谢!

4

1 回答 1

3

您需要链接到正确的库版本。可以在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")
          )
        )
      )
    )
    )
  })
)

在此处输入图像描述

于 2014-07-07T07:42:08.073 回答