2017-07-06 4 views
0

Ich möchte ein Benutzer eine Datei herunterladen, die im Tabellenformat mit Header zusammen mit zwei Such-Widgets an der Spitze ist. Die Ausgabe ist prognostizierte Werte zusammen mit 80% (High-Low) und 95% (High-Low) Konfidenzintervall. Es gibt fünf Spalten, fünf Zeilen (Standard). Allerdings habe ich hier zwei Herausforderungen.Download-Datei in glänzend

Herausforderung 1: Wenn ich die App starte, nach dem Klicken auf "Download der Datei" Dateiname kommt als Download-Daten ohne Erweiterung, während ich erwähnt Dateinamen sollte "prognostiziert" mit PNG-Erweiterung und es sollte wie erwartet kommen .png

Aufgabe 2: Nachdem Sie beim Speichern der Datei png als Erweiterung eingegeben haben, wird die Datei gespeichert, aber nichts wird gedruckt.

Ich habe in verschiedenen Foren gesucht und versuche, sie zu replizieren, aber nichts scheint zu funktionieren.

Bitte vorschlagen.

glänzend UI

library(shiny)  
downloadButton(outputId = "downloaddata" ,label ="Download the file"), 

glänzend Server

output$downloaddata<-downloadHandler(

    filename = function(){ 
     paste("forecasted","png",sep=",") 
    }, 
    content = function(file){ 
     png(file) 
     h <-input$fst 
     tab<-forecast(Model_mape(),h) 
     datatable(as.data.frame(tab), options = list(
     columnDefs = list(list(targets = c(1, 3), searchable = FALSE)), 
     pageLength = 10)) 
     dev.off() 

    } 

) 
+0

einige Zeit müssen Sie die App im Browser öffnen, um die Plots und Datasets –

+0

herunterzuladen Ich kann es nicht für mich selbst versuchen, aber tut der Code zwischen 'png()' und 'dev.off()' tatsächlich etwas plotten . Ich kann keine offensichtlichen Funktionen sehen, die dies tun würden. – JAD

+0

Können Sie den gesamten Code eingeben? Wir könnten es ausführen und Ihr Problem finden (wir benötigen das Plot oder die Daten, die Sie zum Beispiel herunterladen möchten) – MBnnn

Antwort

0

Vielleicht könnte es Ihnen helfen, (es ist ein einfaches Beispiel):

Ui:

library(shiny) 

shinyUI(fluidPage(

    mainPanel(plotOutput("plot1"), 
      downloadButton("downloadplot","Download your plot")) 

)) 

Server:

library(shiny) 

shinyServer(function(input, output) { 
    your_plot = function(){ 
    (plot(rnorm(1000,0,1))) 
    } 


    output$plot1 <- renderPlot({ 
    your_plot() 
    }) 

    output$downloadplot <- downloadHandler(
    filename = "plot_exemple.png", 
    content = function(file) { 
     png(file, width = 1200, height = 800) 
     print(your_plot()) 
     dev.off() 
    }) 

    }) 

Mit diesem können Sie einfach ein PNG herunterladen (öffnen Sie es in einem Browser).