una todos tipos tablas otra muestra los hoja filtros filtro filtrar dinamico dinamicas datos crear como avanzado javascript r datatables shiny

javascript - todos - Tabla de datos interactiva: mantenga filtros de columna después de volver a distribuir la tabla



filtros en tablas dinamicas (1)

Encontré una manera sin usar JavaScript. De hecho, estoy sorprendido de que funcionó. Nunca tuve que lidiar con el paquete DT, pero creo que esto es lo que quieres:

library(shinyBS) library(DT) server <- function(input, output, session) { df <- reactive({ if(input$buttonfilter %% 2 == 0){ df.sub <- iris } else { df.sub <- subset(iris, subset = Species == ''setosa'') } df.sub }) output$mytable <- DT::renderDataTable(isolate(df()), filter = ''top'') proxy <- dataTableProxy(''mytable'') observe({ replaceData(proxy, df(), resetPaging = FALSE) }) } ui <- fluidPage(h3(''Button Toggle Filter''), bsButton("buttonfilter","Show only Setosa", type = ''toggle''), br(),br(), DT::dataTableOutput(''mytable'') ) shiny::shinyApp(ui=ui,server=server)

Básicamente, creamos un proxy para nuestra tabla y simplemente reemplazamos los datos de la tabla representada. Para más detalles, consulte la parte inferior de esta página: https://rstudio.github.io/DT/shiny.html

No encontré el ejemplo mencionado allí en mi computadora pero puede ir a GitHub y copiarlo y pegarlo: https://github.com/rstudio/DT/blob/master/inst/examples/DT-reload/app.R

Espero que esto ayude.

Primer póster aquí. Normalmente puedo obtener todas mis respuestas sin publicar, pero esta realmente me detiene. Soy un usuario intermedio R sin experiencia javascript en absoluto. Esto es lo que trato de hacer:

Tengo una tabla de datos que utiliza filtros interactivos brillantes a través de botones de acción que subconjunto mis datos, y también los filtros integrados de tablas de datos. Los botones de acción realizan el filtrado masivo subdividiendo el marco de datos. El problema que tengo es que cada vez que se aplica uno de estos filtros masivos, la tabla de datos se vuelve a procesar y se borran todos los filtros de columna individuales. Me gustaría poder mantener los filtros de columnas individuales activos siempre que los datos estén subconjuntos y la tabla re-renderizada.

Me las he arreglado para encontrar que puedo generar y aislar esta información de la tabla de datos usando input $ mytable_search_columns, pero no tengo idea de cómo escribir ese javascript que aplicará este criterio al volver a representar la tabla.

library(shinyBS) library(DT) server <- function(input, output, session) { df <- reactive({iris}) df.sub <- reactive({ if(input$buttonfilter == 0){ df.sub <- df() } if(input$buttonfilter == 1){ df.sub <- subset(df(), subset = Species == ''setosa'') } df.sub }) output$mytable <- DT::renderDataTable(df.sub(), filter = ''top'') output$filters <- renderText({input$mytable_search_columns}) } ui <- fluidPage( h3(''Button Toggle Filter''), bsButton("buttonfilter","Show only Setosa", type = ''toggle''), br(), br(), h3(''Current filters''), textOutput(''filters''), br(), br(), DT::dataTableOutput(''mytable'') ) shinyApp(ui = ui, server = server)

Muchas gracias.

EDITAR:

OK, lo hice para que sea reproducible (requiere paquetes shinyBS y DT).

Lo que trato de hacer es encontrar una manera de mantener los filtros DT actuales cuando la tabla se re-renderiza en base al subconjunto iniciado por el botón de acción. En este ejemplo, puede ver que los filtros se borran una vez que se vuelve a generar la tabla.

¡Gracias!