仅从DT导出选定的行

时间:2019-05-08 18:26:25

标签: r dt

我在FlexDashboard中使用R的DT。我可以使用导出按钮,但是我希望能够使导出仅导出通过行或使用DT搜索功能选择的数据。

我已经看过DT手册,但是并没有弄清楚我将如何处理它。

datatable(
  dept_table, 
  rownames = FALSE,
  extensions = "Buttons",
    options = 
    list(
      searching = TRUE, 
      pageLength = 200, 
      scrollX = TRUE,
      scrollY = TRUE,
      dom = "BRSpfrti",
      buttons = c('copy', 'csv', 'excel', 'pdf', 'print')
)

因此,如果我有一个包含128行的表,并且使用搜索只选择了10行,则导出中应该只包含那10行。

2 个答案:

答案 0 :(得分:1)

使用扩展名Select可以实现。包括此扩展名,设置选项select = TRUE并设置如下按钮:

list(
  extend = "csv",
  text = 'CSV',
  exportOptions = list(modifier = list(selected = TRUE))
)

也就是说:

datatable(
  iris, 
  rownames = FALSE,
  extensions = c("Buttons", "Select"),
  options = 
    list(
      select = TRUE,
      searching = TRUE, 
      scrollX = TRUE,
      scrollY = TRUE,
      dom = "BRSpfrti",
      buttons = list(
        list(
          extend = "copy",
          text = 'Copy',
          exportOptions = list(modifier = list(selected = TRUE))
        ), 
        list(
          extend = "csv",
          text = 'CSV',
          exportOptions = list(modifier = list(selected = TRUE))
        ), 
        list(
          extend = "excel",
          text = 'Excel',
          exportOptions = list(modifier = list(selected = TRUE))
        ), 
        list(
          extend = "pdf",
          text = 'PDF',
          exportOptions = list(modifier = list(selected = TRUE))
        ), 
        list(
          extend = "print",
          text = 'Print',
          exportOptions = list(modifier = list(selected = TRUE))
        )
      )
    )
)

enter image description here

答案 1 :(得分:0)

也许最好的方法是在DT可视化之前添加一个或几个会影响您数据框的闪亮按钮(而不是直接在DT生成的表上使用过滤器)并导出整个数据集。

您使用搜索DT创建的过滤器不会存储在任何地方,因此很难仅导出与此研究相对应的行。