2017-01-11 66 views
1

我希望能夠在使用內置搜索進行過濾後下載數據表。要麼這樣做,要麼能夠使用數據表中使用的相同種類的搜索過濾數據幀,並訪問數據表上的搜索。R - 下載已過濾的數據表

+0

到目前爲止您嘗試過什麼? –

+0

@PorkChop我試過尋找一種方法來訪問數據表的內部結構,並且我已經嘗試編寫我自己的搜索,但它只是不能像數據表搜索那樣工作。文檔顯示沒有真正的方法來提供過濾回服務器。 – HSchmale

+0

發佈代碼與您的嘗試,所以我們可以看看 –

回答

4

如果您使用客戶端處理,您可以使用輸入對象input[["tablename_rows_all"]]完成此操作。 (將_rows_all附加到數據表輸出槽的名稱)

_rows_all對象將返回數據幀的行索引。您可以在您的downloadHandler中使用該功能在下載啓動時對數據框進行子集化。

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

我正嘗試使用「d3tablefilter」(它允許多個字符串進行過濾,而不像具有過濾限制的數據表)過濾數據表。但是,複製您的代碼下載不起作用。你能幫忙嗎? https://github.com/ThomasSiegmund/D3TableFilter –