2016-04-25 15 views
2

Ich versuche, eine shiny App zu tun zum Herunterladen einer Filtred Datatable:r glänzend herunterladen filtrered Datentabellen (DT)

  • mit dem searsh
  • durch Löschen Linie mit dem delete button
unfiltriertes gefiltert

(der Download-Teil funktioniert wie vorgesehen)

das Problem: wenn ich zuerst mit dem Searsh a filtern rea von Datatable, wenn ich eine Zeile mit dem es den ersten Filter

meine reproduzierbare exemple Reset-Taste löschen: bearbeitet Arbeitslösung

library(shinydashboard) 
library(DT) 
library(shiny) 

ui <- dashboardPage(
    dashboardHeader(title = "Info boxes"), 
    dashboardSidebar(), 
    dashboardBody(
    fluidRow(DT::dataTableOutput('data')), 
    fluidRow(p(class = 'text-center', downloadButton('x3', 'Download Filtered Data'))) 
) 
) 

server <- function(input, output) { 
    df <- reactiveValues(data = data.frame(
     Value1 = 1:10, 
     Value2 = c("A", "B", "C", "D", "E"), 
     stringsAsFactors = FALSE, 
     row.names = 1:10 
    )) 

    output$data <- DT::renderDataTable(
    df$data, server = TRUE, filter = 'top', escape = FALSE, selection = 'none') 

    # download the filtered data 
    output$x3 = downloadHandler('emergence filtré.csv', content = function(file) { 
     s = input$data_rows_all 
     write.table(df$data[s,], file ,sep=";",row.names = F) 
    })  
} 
shinyApp(ui = ui, server = server) 

Danke

Antwort

4

Ich denke, das liegt daran, dass die Suchfilter ist auf der Client-Seite (innerhalb des Web-Browsers) und ändert nicht wirklich den zugrunde liegenden Datenrahmen. Eine mögliche Alternative besteht darin, der Tabelle einen Filter hinzuzufügen und diesen als Suchfunktion zu verwenden und auch die serverseitige Verarbeitung festzulegen. Dies wird jedoch keine globale Suche in einer Box durchführen.

output$data <- DT::renderDataTable(
    df$data, server = TRUE, filter = 'top', escape = FALSE, selection = 'none' 
) 
+0

es funktioniert Ich habe den Code bearbeitet (und die Löschtaste entfernt) –

Verwandte Themen