我 Shiny 的应用程序中有两个数据表,它们位于不同的选项卡中。其中一个具有用于列选择和导出到 xlsx 的按钮,另一个仅用于列选择。 启动应用程序后,如果我首先转到只有一个按钮的数据表选项卡,而不是第二个按钮,则第二个按钮不再具有导出到 xlsx 按钮。但是,如果我先使用两个按钮转到数据表,然后再转到另一个按钮,那么两个数据表都有它们应该具有的按钮。关于如何解决这个问题的任何想法?
library(shiny)
library(shinydashboard)
library(DT)
library(dplyr)
# Define UI for app that draws a histogram ----
ui <- dashboardPage(
dashboardHeader(title = "Basic dashboard"),
dashboardSidebar(
sidebarMenu(
menuItem('intro', tabName = 'intro'),
menuItem('df1', tabName = 'df1'),
menuItem('df2', tabName = 'df2')
)),
dashboardBody(
tabItems(
tabItem('intro', 'Hello'),
tabItem(tabName = 'df1',
sliderInput('horsepower', label = 'horsepower', min = min(mtcars$hp), max = max(mtcars$hp), value = c(min(mtcars$hp), max(mtcars$hp))),
dataTableOutput('dt1t')
),
tabItem(tabName = 'df2',
dataTableOutput('dt2t')
)
)
)
)
server <- function(input, output) {
output$dt1t <- renderDataTable({
mtcars %>%
filter(hp >= input$horsepower[[1]], hp <= input$horsepower[[2]]) %>%
datatable(extensions = c('Scroller', 'Buttons'), options = list(
dom = 'Bt',
buttons = list('colvis', list(extend = 'excel', text = 'Export to xlsx')),
scroller = T,
scrollY = 500,
scrollX = T),
escape = F,
selection = 'single',
rownames = F)
})
output$dt2t <- renderDataTable({
iris %>%
datatable(extensions = c('Scroller', 'Buttons'), options = list(
dom = 'Bt',
buttons = list('colvis'),
scroller = T,
scrollY = 500,
scrollX = T),
escape = F,
selection = 'single',
rownames = F)
})
}
shinyApp(ui = ui, server = server)
最佳答案
此错误似乎已在 923545
中解决,DataTables 库和一些扩展的更新。我猜这是 Buttons 扩展(从 1.2.0 to 1.4.1 升级而来)中的错误,但不确定。
因此将 DT 更新到版本 0.2.15 或更高版本,问题应该消失了。您可以通过运行 devtools::install_github("rstudio/DT@923545")
获取 0.2.15,或者从 CRAN 安装最新版本,或者在 GitHub 安装最新的开发版本。
注意:要重现该问题,您可以通过运行 devtools::install_github("rstudio/DT@b2c0c9")
关于r - 根据首先加载的表,数据表按钮正在消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48864000/