Tôi đang cố gắng tìm hiểu cách sử dụng nút DownloadButton để lưu một ô có bóng. Ví dụ trong gói thể hiện downloadButton/downloadHandler để lưu tệp .csv. Tôi sẽ làm một ví dụ tái sản xuất dựa trên đó.Lưu các ô được tạo trong một ứng dụng sáng bóng
Đối 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')
)
))
Đối 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())
}
)
})
Nếu bạn đang trả lời câu hỏi này, bạn có thể quen với điều này, nhưng để làm việc này, hãy lưu ở trên vào kịch bản riêng biệt (ui.R
và server.R
vào thư mục (foo
) trong thư mục hoạt động. Để chạy ứng dụng sáng bóng, hãy chạy runApp("foo")
.
Sử dụng ggsave
, tôi nhận được thông báo lỗi cho biết rằng ggsave không thể sử dụng chức năng filename
(tôi nghĩ). Nếu tôi sử dụng thiết bị đồ họa tiêu chuẩn (như dưới đây), các Download Plot
hoạt động mà không có một lỗi, nhưng nó không viết đồ họa.
Bất kỳ mẹo nào để tải xuốngHandler làm việc để viết lô sẽ được đánh giá cao.
Tôi tin câu trả lời của bạn thực sự là câu trả lời đúng ở đây. Bạn cũng có thể sử dụng 'ggsave (file, plotInput(), device = png)' thay vì tạo một hàm (wrapper) của thiết bị. –
@sebkopf Tôi đã bỏ lỡ câu trả lời của bạn trong năm can thiệp và một chút! – alexwhan
@Yihui Giải pháp này không hoạt động đối với tôi: Phiên bản R 3.1.0, ggplot2_1.0.0 shiny_0.10.1. Lưu hộp bật lên, nhấp vào lưu, nhưng không có tệp nào được lưu. Có ai xác nhận không? – zx8754