识别显示的行

问题描述 投票:0回答:1

我正在开发一个包含数据表的 R Shiny 应用程序 (

myDataTable
)。我需要三个导出函数,提供以下功能:

  1. 所有行导出到CSV
  2. 选定的行导出到CSV
  3. 显示的行导出到CSV

一和二很容易解决。 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
没有为此提供任何有用的功能。

r shiny dt
1个回答
3
投票

您可以简单地使用

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))
    })
  }
)
© www.soinside.com 2019 - 2024. All rights reserved.