R - Download Filtered Datatable

前端 未结 1 1188
长发绾君心
长发绾君心 2020-12-18 13:37

I would like to be able to download a datatable after it is filtered using it\'s built in search. Either that or be able to filter a dataframe using the same kind of search

相关标签:
1条回答
  • 2020-12-18 14:19

    If you use client side processing, you can accomplish this with the input object input[["tablename_rows_all"]]. (append _rows_all to the name of the datatable output slot)

    The _rows_all object will return the row indices of your data frame. You can use that within your downloadHandler to subset the data frame when the download is initiated.

    library(shiny)
    library(DT)
    
    shinyApp(
      ui = 
        shinyUI(
          fluidPage(
            DT::dataTableOutput("dt"),
    
            p("Notice that the 'rows_all' attribute grabs the row indices of the data."),
            verbatimTextOutput("filtered_row"),
    
    
            downloadButton(outputId = "download_filtered",
                           label = "Download Filtered Data")
          )
        ),
    
      server = 
        shinyServer(function(input, output, session){
          output$dt <- 
            DT::renderDataTable(
              datatable(mtcars,
                        filter = "top"),
              server = FALSE
            )
    
          output$filtered_row <- 
            renderPrint({
              input[["dt_rows_all"]]
            })
    
    
          output$download_filtered <- 
            downloadHandler(
              filename = "Filtered Data.csv",
              content = function(file){
                write.csv(mtcars[input[["dt_rows_all"]], ],
                          file)
              }
            )
        })
    )
    
    0 讨论(0)
提交回复
热议问题