Zapisz działki wykonane w błyszczącej aplikacji

Próbuję dowiedzieć się, jak użyć downloadButton, aby zapisać działkę z połyskiem. Przykład w pakiecie demonstruje downloadButton / downloadHandler, aby zapisać plik .csv. Mam zamiar stworzyć na tej podstawie powtarzalny przykład.

Dlaui.R

shinyUI(pageWithSidebar(
  headerPanel('Downloading Data'),
  sidebarPanel(
selectInput("dataset", "Choose a dataset:", 
            choices = c("rock", "pressure", "cars")),
    downloadButton('downloadData', 'Download Data'),
    downloadButton('downloadPlot', 'Download Plot')
  ),
  mainPanel(
    plotOutput('plot')
  )
))

Dlaserver.R

library(ggplot2)
shinyServer(function(input, output) {
  datasetInput <- reactive({
    switch(input$dataset,
           "rock" = rock,
           "pressure" = pressure,
           "cars" = cars)
  })

  plotInput <- reactive({
    df <- datasetInput()
    p <-ggplot(df, aes_string(x=names(df)[1], y=names(df)[2])) +
      geom_point()
  })

  output$plot <- renderPlot({
    print(plotInput())
  })

  output$downloadData <- downloadHandler(
    filename = function() { paste(input$dataset, '.csv', sep='') },
    content = function(file) {
      write.csv(datatasetInput(), file)
    }
  )
  output$downloadPlot <- downloadHandler(
    filename = function() { paste(input$dataset, '.png', sep='') },
    content = function(file) {
      ggsave(file,plotInput())
    }
  )
})

Jeśli odpowiadasz na to pytanie, prawdopodobnie znasz to zagadnienie, ale aby to zadziałało, zapisz powyższe w osobnych skryptach (ui.R iserver.R do folderu (foo) w katalogu roboczym. Aby uruchomić błyszczącą aplikację, uruchomrunApp("foo").

Za pomocąggsave, Dostaję komunikat o błędzie wskazujący, że ggsave nie może użyćfilename funkcja (myślę). Jeśli korzystam ze standardowego urządzenia graficznego (jak poniżej), theDownload Plot działa bez błędu, ale nie pisze grafiki.

Docenione zostaną wszelkie wskazówki dotyczące pobierania downloadHandler do pisania wątków.

questionAnswers(4)

yourAnswerToTheQuestion