stateSave不保留闪亮数据表中的过滤器

时间:2017-06-16 22:54:17

标签: r shiny dt

我在闪亮的应用中有一个数据表。设置stateSave = TRUE会按升序或降序保留列的排序,但如果设置了过滤器参数(例如,cyl = 6:8),则不会保留。关于如何解决这个问题的任何想法?

示例代码如下:

require(shiny)
require(DT)

ui<-fluidPage(
  column(12,
         DT::dataTableOutput("mtcars_table")
  )
)

server<-function(input,output,session)
{

  output$mtcars_table <- DT::renderDataTable({datatable({mtcars},
    options = list(pageLength = 50, 
                   stateSave = TRUE
    ),
    selection = "single", filter = "top", escape = FALSE)}, 
    server = FALSE)
}

shinyApp(ui=ui, server=server)

1 个答案:

答案 0 :(得分:1)

它仅适用于服务器端处理(设置server = TRUE)。 不幸的是,因为您可能拥有更大的数据集,并且可能会导致性能问题。

原因很简单。不保存过滤器,而是保存过滤后的数据集。请注意,在刷新后,您仍然可以看到数据已正确过滤(使用服务器端处理),但过滤器本身不再显示。如果单击过滤器字段并注意到显示的范围/选择与过滤数据集的属性不匹配,则可以看到未存储。

对于服务器端处理,数据保留在服务器上。如果您过滤数据并刷新页面,数据仍将被过滤。但是,对于非服务器端处理,文档(?renderDataTable)告诉您,“整个数据帧立即发送到浏览器”。再见过滤器:(。