Guarda parcelas hechas en una aplicación brillante

Estoy tratando de averiguar cómo usar downloadButton para guardar un gráfico con brillos. El ejemplo en el paquete muestra downloadButton / downloadHandler para guardar un archivo .csv. Voy a hacer un ejemplo reproducible basado en eso.

porui.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')
  )
))

porserver.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())
    }
  )
})

Si está respondiendo esta pregunta, probablemente esté familiarizado con esto, pero para que esto funcione, guarde lo anterior en guiones separados (ui.R yserver.R en una carpeta (foo) dentro del directorio de trabajo. Para ejecutar la aplicación brillante, ejecuterunApp("foo").

Utilizandoggsave, Recibo un mensaje de error que indica que ggsave no puede usar elfilename Función (creo). Si utilizo el dispositivo de gráficos estándar (como a continuación), elDownload Plot Funciona sin error, pero no escribe el gráfico.

Cualquier consejo para obtener DownloadHandler trabajando para escribir diagramas sería apreciado.

Respuestas a la pregunta(4)

Su respuesta a la pregunta