मैं यह पता लगाने की कोशिश कर रहा हूं कि चमकदार के साथ एक भूखंड को बचाने के लिए डाउनलोडबटन का उपयोग कैसे करें। पैकेज में उदाहरण एक .csv को बचाने के लिए डाउनलोडबटन / डाउनलोडहैंडलर प्रदर्शित करता है। मैं उसी के आधार पर एक प्रतिलिपि प्रस्तुत करने योग्य उदाहरण बनाने जा रहा हूं।
के लिये ui.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')
)
))
के लिये server.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())
}
)
})
यदि आप इस प्रश्न का उत्तर दे रहे हैं, तो आप शायद इससे परिचित हैं, लेकिन इस कार्य को करने के लिए, उपरोक्त लिपियों को ( ui.R
और server.R
एक फ़ोल्डर में foo
) कार्यशील निर्देशिका में सहेजें । चमकदार ऐप को चलाने के लिए, रन करें runApp("foo")
।
का उपयोग करते हुए ggsave
, मुझे एक त्रुटि संदेश मिलता है जो यह दर्शाता है कि ggsave filename
फ़ंक्शन का उपयोग नहीं कर सकता है (मुझे लगता है)। अगर मैं मानक ग्राफिक्स डिवाइस (जैसे नीचे) का उपयोग करता हूं, तो Download Plot
त्रुटि के बिना काम करता है, लेकिन यह ग्राफिक नहीं लिखता है।
डाउनलोड करने के लिए कोई भी सुझाव प्राप्त करने के लिए प्लॉट लिखने के लिए काम करने वाले को सराहना मिलेगी
ggsave(file, plotInput(), device = png)
डिवाइस (आवरण) फ़ंक्शन बनाने के बजाय उपयोग कर सकते हैं ।