我正在使用包含DataTable(myDataTable
)的R Shiny App。我需要三个导出功能,提供以下功能:
一两个很容易解决。 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
没有提供任何有用的功能。
答案 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))
})
}
)