我需要在重新加载时平滑地替换(格式化)数据表中的数据,而页面不会闪烁。
按照此处@yihui 的示例:https ://github.com/rstudio/DT/issues/168我已经成功地替换了标准数据表中的数据,而没有使用 dataTableProxy 函数闪烁页面。
通过 formattable 包包含格式时,我的代码会引发错误:警告:as.data.frame.default 中的错误:无法将类“c(“datatables”,“htmlwidget”)”强制转换为 data.frame
最小的可重现示例:
library(shiny)
library(DT)
library(formattable)
dt <- data.frame(type = letters[1:5], count = sample(1:10, 5))
shinyApp(
ui = fluidPage(sidebarLayout(
sidebarPanel(
sliderInput(
"number",
"Select:",
min = 0,
max = 10,
value = 8
)
),
mainPanel(DT::dataTableOutput('DTtable'))
)),
server = function(input, output, session) {
# Reactive expression of the data frame, subset by the slider number
sliderValues <- reactive({
# Compose data frame
dt['count' > input$number,]
})
output$DTtable = DT::renderDataTable(as.datatable(formattable(
isolate(sliderValues()),
list(count = color_tile('#ffffff', '#6be560'))
)))
observeEvent(sliderValues(), ignoreInit = T, {
replaceData(dataTableProxy('DTtable'),
as.datatable(formattable(
isolate(sliderValues()),
list(count = color_tile('#ffffff', '#6be560'))
)))
})
}
)
当我移动滑块时,我希望重新加载表格,同时保留可格式化的样式。