在R ShinyProxy中,当用户使用extensions=';对DT::datatable重新排序后,如何从中获取列的顺序;ColReorder';?

在R ShinyProxy中,当用户使用extensions=';对DT::datatable重新排序后,如何从中获取列的顺序;ColReorder';?,r,shiny,datatables,dt,R,Shiny,Datatables,Dt,我在ShinyProxy中有一个闪亮的应用程序,需要用户登录才能访问。我在应用程序中有一个DT::datatable,它允许用户对列进行重新排序(大约有20-30列数据,因此重新排序很麻烦)。如果他们先对列重新排序,然后使用任何过滤器/切片器,则列将重新排序回默认值;如果他们离开应用程序并重新打开,则列将返回默认顺序 我想给用户一个“保存列顺序”操作按钮,然后将每个用户的设置存储在Redis中,这样,当他们使用过滤器和/或离开并重新进入应用程序时,他们就有了自己的首选列顺序,而不是我设置的默认列

我在ShinyProxy中有一个闪亮的应用程序,需要用户登录才能访问。我在应用程序中有一个DT::datatable,它允许用户对列进行重新排序(大约有20-30列数据,因此重新排序很麻烦)。如果他们先对列重新排序,然后使用任何过滤器/切片器,则列将重新排序回默认值;如果他们离开应用程序并重新打开,则列将返回默认顺序

我想给用户一个“保存列顺序”操作按钮,然后将每个用户的设置存储在Redis中,这样,当他们使用过滤器和/或离开并重新进入应用程序时,他们就有了自己的首选列顺序,而不是我设置的默认列顺序-想让他们更轻松

我发现这个网站()让我很接近,但没有雪茄。我想可能是
input$tableId\u columns\u all
input$tableId\u columns
——但是,这些都不起作用/返回NA

我曾尝试过大量的谷歌搜索,我发现大多数似乎能帮我找到答案的东西要么是Python要么是jQuery,我不相信这能解决我的问题

我愿意接受那些遵循我曾经想到的ActionButton+redis方法或者完全不同的想法的建议!我只是想在ShinyProxy中保存用户设置


谢谢

我不知道如何保存/恢复订单,但以下是如何获得订单:

library(shiny)
library(DT)

js <- c(
  "table.on('column-reorder', function(e, settings, details){",
  "  Shiny.setInputValue('colOrder', details.mapping);",
  "});"
)

ui <- fluidPage(
  br(),
  DTOutput("tbl"),
  br(),
  verbatimTextOutput("columnsOrder")
)

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

  output[["tbl"]] <- renderDT({
    datatable(iris[1:5,], extensions = "ColReorder", 
              callback = JS(js), 
              options = list(
                colReorder = TRUE
              )
    )
  })

  output[["columnsOrder"]] <- renderPrint({
    input[["colOrder"]]
  })

}

shinyApp(ui, server)
库(闪亮)
图书馆(DT)

js我现在在同一个项目中遇到了内存问题(呃),所以我正在首先解决这个问题,但我认为你上面分享的东西应该可以工作!!一旦我能确认,我会把它标记为答案-谢谢你的帮助!这很有魅力!你的答案也很容易理解-谢谢!!