R Shiny DataTable:识别显示的行

时间:2017-08-23 13:20:27

标签: r datatable shiny

我正在使用包含DataTable(myDataTable)的R Shiny App。我需要三个导出功能,提供以下功能:

  1. 所有行导出为CSV
  2. 选定的行导出为CSV
  3. 显示的行导出为CSV
  4. 一两个很容易解决。 1.所有条目:我只导出服务器端data.frame,作为DataTable的数据模型。 2.选定的条目:我访问选定的行,如下所示:

    observeEvent(input$myDataTable_rows_selected, {
        rows <- sort(input$myDataTable_rows_selected)
        # do something with rows
    }
    

    但是如何找出哪些行显示(即已过滤)?我想到了一种HTML方法,我选择了tr的所有div#myDataTable元素,但shinyjs没有提供任何有用的功能。

1 个答案:

答案 0 :(得分:2)

您只需将input$myDataTable_rows_all用于过滤后的数据。

小例子:

library(shiny)
library(DT)

shinyApp(
  ui = fluidPage(
    dataTableOutput('myDataTable')
  ),

  server = function(input, output) {    
    observeEvent(input$myDataTable_rows_all, {
      rows_filtered <- input$myDataTable_rows_all
      rows_displayed <- rows_filtered[1:min(length(rows_filtered), input$myDataTable_state$length)]
      # Download rows with your download fct.
      print(rows_displayed)
    })

    output$myDataTable = DT::renderDataTable({
      datatable(mtcars, options = list(stateSave = TRUE))
    })
  }
)