使用DT包的按钮扩展,有没有办法指定按钮下载(1)所有数据提供数据,或(2)只有可见页面上的数据。
以下是documentation的示例。
datatable(
iris, extensions = 'Buttons', options = list(
dom = 'Bfrtip',
buttons = c('copy', 'csv', 'excel', 'pdf', 'print')
)
)
答案 0 :(得分:11)
正如@divibisan所说,一种选择是使用server
的{{1}}参数来控制下载按钮将仅下载当前行还是全部行。
如果您想要一个下载按钮,那将很好用。但是,如果要始终显示两个按钮,其中一个下载当前页面,一个下载整个数据集,则可以使用以下代码:
renderDT()
答案 1 :(得分:3)
您正在寻找modifiers: page: selected
。这是一个有效的例子
ui <- fluidPage(
title = "Examples of DataTables",
sidebarLayout(
mainPanel(
tabsetPanel(
id = 'dataset',
tabPanel("diamonds", DT::dataTableOutput("mytable1"))
)
)
)
)
server <- function(input, output) {
# choose columns to display
diamonds2 = diamonds[sample(nrow(diamonds), 1000), ]
output$mytable1 <- DT::renderDataTable({
DT::datatable(diamonds2,
extensions = 'Buttons',
options = list(
dom = 'Bfrtip',
buttons =
list(
list(
extend = 'csv',
buttons = c('csv'),
exportOptions = list(
modifiers = list(page = "current")
)
))
)
)
})
}
shinyApp(ui, server)
希望这有帮助!
答案 2 :(得分:2)
请参阅此答案:DT Buttons: download button with scroller downloads only few rows
按钮是导出所有数据还是仅导出可见数据取决于server
函数调用中的DT::renderDT
参数。如果server=FALSE
,则按钮将导出表格中的所有数据,而如果server=TRUE
,则只会导出可见数据。
您可以使用变量设置server
参数,使其成为可选择的选项。
output$table <- DT::renderDT(server = input$download_all, {
DT::datatable( ... )
}
您可能希望查看的另一个选项是exportOptions: modifiers: selected
选项,该选项确定是仅下载选定的行(默认值)还是所有行。您可以在此处阅读该选项:https://datatables.net/extensions/buttons/examples/print/select.html
请注意,如果您的数据表非常大,您的用户可能会使用server=FALSE
遇到性能和内存问题。