Descarga de objetos reactivos en brillante

¿Es posible descargar objetos en brillante sin tener que crear una instancia separada y redundante de ese objeto dentro de ladownloadHandler() ¿llamada? Por ejemplo, considere el siguiente ejemplo:

ui.R

library(shiny)

shinyUI(pageWithSidebar(
  headerPanel("Simple Example"),

  sidebarPanel(
    textInput("options","Enter some content:",""),
    submitButton("Go")
  ),

  mainPanel(
    tableOutput("dataTable"),
    downloadButton('downloadData','Save Data as CSV File')
  )
))

servidor.R

library(shiny)

shinyServer(function(input, output) {
  makeQuery <- reactive({
      if(input$options == ""){
        return("Enter some options")
      }
      else {
        return(input$options)
      }
  })

  runQuery <- function(query){
    dat <- data.frame(v1=rep(query,5))
    return(dat)
  }

  output$dataTable <- renderTable({
    query <- makeQuery()
    if(grepl("^Enter",query)){
      return(data.frame(Error=query))
    } else {
      return(runQuery(query))
    }
  },include.rownames=FALSE)

  output$downloadData <- downloadHandler(
    filename = c('data.csv'),
    content = function(file) {
      write.csv(runQuery(makeQuery()), file)
    }
  )

})

El problema que tengo con el ejemplo anterior es que estoy ejecutandorunQuery() dentro de ambosrenderTable() ydownloadHandler() llamadas En este ejemplo, realmente no hay una sobrecarga adicional, pero en mi ejemplo real, esto requiere ejecutar un proceso de 5 a 10 minutos, por lo que es extremadamente ineficiente llamarlo dos veces cada vez que alguien descarga los datos.

¿Hay alguna manera de que pueda solucionar este problema haciendo referencia a un objeto ya creado en eldownloadHandler() llamar o algún otro trabajo alrededor?

Respuestas a la pregunta(1)

Su respuesta a la pregunta