downloadHandler()
çağrısı içinde, bu nesnenin ayrı, yedekli bir örneğini oluşturmak zorunda kalmadan, nesneleri parlak bir şekilde indirmek mümkün mü? Örneğin, aşağıdaki örnek ele alalım:Parlak Nesnede Reaktif Nesneleri İndirme
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)
}
)
})
Yukarıdaki örnekle var Sorunum renderTable()
hem içinde runQuery()
çalıştırıyorum olmasıdır ve downloadHandler()
çağrıları. Bu örnekte gerçekten fazladan bir yük yok ama benim gerçek örneğimde bu bir 5-10 dakikalık bir süreç gerektiriyor, bu yüzden birisi veriyi indirdiğinde iki kez çağırmak için son derece verimsiz.
Bu soruna, downloadHandler()
numaralı çağrıda veya başka bir işte önceden oluşturulmuş bir nesneyi referans alarak bulabilir miyim?
Sorgulama hızlandırılabilir mi? data.table' veya başka bir şey? Sorgularınız bu kadar uzun sürüyorsa, sorun yükleyici olduğunu düşünmüyorum. – intra
Ne yazık ki değil - bir veri tabanı için bir kovan sorgu. – David