我试图找出如何使用下载按钮,以保存一个情节与闪亮。包中的示例演示了 downloadButton/downloadHandler
保存。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
工作没有错误,但它不写的图形。
如果您能提供任何关于如何使用 Handler 编写情节的技巧,我们将不胜感激。