从闪亮的渲染数据表中保存

Posted

技术标签:

【中文标题】从闪亮的渲染数据表中保存【英文标题】:Saving from Shiny renderDataTable 【发布时间】:2014-10-22 15:02:35 【问题描述】:

之前R shiny dataTables with TableTools and other extensions 和Use TableTools for DataTables in R Shiny for renderDataTable 已经问过这个问题,但我目前正在努力获得 TableTools 的演示,以便从闪亮的应用程序下载 csv 或 xls。该按钮似乎可以工作,并且 csv/xls 选项可用,但没有任何反应。我唯一能想到的是将数据表版本从 1.9.4 更新到 1.10.1,但仍然没有。除非我犯了一些愚蠢的错误,否则所有其他路径都是最新的。谢谢。

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")
          )
        )
      )
    )
    )
  )
)

【问题讨论】:

不确定您的代码是否正确。没有为我显示任何按钮 【参考方案1】:

在倾注了这个之后,我发现了我最初的错误。令人尴尬的是,主要问题是我试图直接从闪亮应用程序的 rstudio 启动中保存。从那以后我了解到这是不可能的,因为 rstudio 没有闪存。因此,最初的解决方案是简单地运行应用程序,然后在安装了 flash 的浏览器中打开它。 然后保存按钮正常工作,我可以保存过滤后的数据集。

但是,在我的努力中,我发现了一些其他人可能会觉得有用的简化。

闪亮的下一个版本将使用更新的 1.10.2 数据表。您可以从github page 下载当前的开发版本。这允许在更新其他源文件的链接后省略 zeroclipboard 文件。下面是我在使用最新闪亮包的浏览器中打开时发现的最终代码。请注意,由于 DataTables 1.10.x 已转换为驼峰式表示法,因此表示法略有变化。旧符号的转换位于here。

library(shiny)
library(ggplot2)
runApp(
  list(ui = basicPage(
    h1('Diamonds DataTable with TableTools'),
    tagList(
      singleton(tags$head(tags$script(src='//cdn.datatables.net/1.10.2/js/jquery.dataTables.min.js',type='text/javascript'))),
      singleton(tags$head(tags$script(src='//cdn.datatables.net/tabletools/2.2.2/js/dataTables.tableTools.min.js',type='text/javascript'))),
      singleton(tags$head(tags$link(href='//cdn.datatables.net/tabletools/2.2.2/css/dataTables.tableTools.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(
      "dom" = '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")
          )
        )
      )
    )
    )
  )
)

编辑

从 DT 0.1.5x 开始,随着 TableTools 更新,界面发生了变化。您现在使用 Buttons 扩展程序。 注意 - 这仍然(2016 年 3 月 29 日)需要用户从 github 安装,直到作者认为更新足以推送到 CRAN。

library(shiny)
library(DT)
library(ggplot2)

runApp(
  list(ui = basicPage(
    h1('Diamonds DataTable with DT'),
    dataTableOutput("mytable")
  )
  ,server = function(input, output) 
    output$mytable = renderDataTable(
      diamonds[,1:6]
    , 
    extensions = 'Buttons',
    options = list(
      "dom" = 'T<"clear">lBfrtip',
      buttons = list('copy', 'csv', 'excel', 'pdf', 'print')
    )
    )
  )
)

【讨论】:

保存按钮在保存为 csv 或 excel 时没有任何作用。我试过通过浏览器运行闪亮的应用程序来做到这一点。 @BlackMilk 请查看我的编辑。最近界面变了。提供的编辑对我有用。

以上是关于从闪亮的渲染数据表中保存的主要内容,如果未能解决你的问题,请参考以下文章

R闪亮:更新data.table中的选择输入值

如何在闪亮的数据表中保存排序?

如何在实时数据框中保存 sql 数据库?闪亮的

尝试从 R 脚本渲染闪亮的 flexdashboard 时找不到错误对象输出

数据表不会在闪亮的仪表板中呈现

运行冗长闪亮的应用程序时网络超时