Pobieranie obiektów reaktywnych w błyszczących

Czy można pobierać obiekty w błyszczący, bez konieczności tworzenia oddzielnego, zbędnego wystąpienia tego obiektu wdownloadHandler() połączenie? Weźmy na przykład następujący przykład:

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

server.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)
    }
  )

})

Problem z powyższym przykładem polega na tym, że pracujęrunQuery() w oburenderTable() idownloadHandler() połączenia. W tym przykładzie tak naprawdę nie ma żadnych dodatkowych kosztów, ale w moim prawdziwym przykładzie wymaga to uruchomienia procesu 5-10 minut, więc zadzwonienie do niego dwukrotnie, gdy ktoś pobierze dane, jest bardzo nieefektywne.

Czy mimo to mogę obejść ten problem, odwołując się do już utworzonego obiektu wdownloadHandler() zadzwonić lub obejść jakieś inne?

questionAnswers(1)

yourAnswerToTheQuestion