我正在开发一个包含数据表的 R Shiny 应用程序 (
myDataTable
)。我需要三个导出函数,提供以下功能:
一和二很容易解决。 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
没有为此提供任何有用的功能。
您可以简单地使用
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))
})
}
)