当您单击 DataTable 1 选项卡时,您可以在顶部看到长度菜单,这是该问题的要点。以 output$ex1
开头的位在服务器中对该数据表进行编码。
实际上,我希望有用于列可见性和下载数据的按钮。对 output$ex1
的一点修改通过添加 buttons
争论
是必须的。然后,你最终得到 output$ex2
.但现在我想念长度菜单。
我想添加 pageLength = 5, lengthMenu = c(5, 10, 15, 20)
到 output$ex2
从以 output$ex3
开头的代码中可以看出将解决这个问题,我可以恢复长度菜单。但是第三个给了我和第二个完全一样的 table 。
1) 我怎样才能同时拥有按钮和长度菜单?
2) 如何安排按钮的位置?例如,我希望 colvis 的按钮位于下载按钮的上方。
3)当你查看下面的代码时,你会发现按钮中也包含了excel:buttons = c('colvis', 'copy', 'csv', 'excel', 'pdf', 'print')
但是在最后 2 个表格中,您都看不到 Excel 按钮。
此外,我没有收到错误消息。
我将不胜感激任何帮助。
library(shiny)
ui <- navbarPage(
title = 'DataTable Options',
tabPanel('DataTable 1', DT::dataTableOutput('ex1')),
tabPanel('DataTable with Buttons 1', DT::dataTableOutput('ex2')),
tabPanel('DataTable with Buttons 2', DT::dataTableOutput('ex3'))
)
server <- function(input, output) {
output$ex1 <- DT::renderDataTable(
DT::datatable(iris,
class = 'cell-border stripe',
filter = 'top',
options = list(autoWidth = TRUE)))
output$ex2 <- DT::renderDataTable(
DT::datatable(iris,
class = 'cell-border stripe',
filter = 'top', extensions = 'Buttons',
options = list(autoWidth = TRUE,
dom = 'Bfrtip',
buttons = c('colvis', 'copy', 'csv', 'excel',
'pdf', 'print'))))
output$ex3 <- DT::renderDataTable(
DT::datatable(iris,
class = 'cell-border stripe',
filter = 'top', extensions = 'Buttons',
options = list(autoWidth = TRUE,
pageLength = 5, lengthMenu = c(5, 10, 15, 20),
dom = 'Bfrtip',
buttons = c('colvis', 'copy', 'csv', 'excel',
'pdf', 'print'))))
}
shinyApp(ui = ui, server = server)
最佳答案
您需要在 dom 中添加“l”(小写字母“L”),这使得 Blfrtip:
B - 按钮
l - 变长输入控制
f - 过滤输入
r - pProcessing 显示元素
t - 表
i - 表信息汇总
p - 分页控制
这些功能可以使用以下命令定位:
"dom": "<'row'<'col-md-3'B><'col-md-6'l><'col-md-3'f>><'row'<'col-md-12't>><'row'<'col-md-3'i><'col-md-6'><'col-md-3'p>>"
就像我们在 Bootstrap 中所做的一样。
关于R 数据表不会同时显示按钮和长度菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52645959/