Próbuję dowiedzieć się, jak użyć funkcji downloadButton, aby zapisać fabułę za pomocą błyszczącej. Przykład w pakiecie demonstruje downloadButton/downloadHandler, aby zapisać plik .csv. W oparciu o to zrobię powtarzalny przykład.Zapisywanie działek w błyszczącej aplikacji
Dla 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')
)
))
Dla 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())
}
)
})
Jeśli odpowiedzi na to pytanie, prawdopodobnie jesteś zaznajomiony z tym, ale aby dostać tę pracę, zapisać powyższe pod oddzielne skrypty (ui.R
ido folderu (foo
) w katalogu roboczym. Aby uruchomić błyszczącą aplikację, uruchom runApp("foo")
.
Przy użyciu ggsave
, pojawia się komunikat o błędzie informujący, że ggsave nie może użyć funkcji filename
(myślę). Jeśli używam standardowego urządzenia graficznego (jak poniżej), Download Plot
działa bezbłędnie, ale nie zapisuje grafiki.
Wszelkie wskazówki, jak pobrać dział pomocy w pisaniu działek, będą mile widziane.
Wierzę, że twoja odpowiedź jest rzeczywiście właściwa tutaj. Możesz także użyć 'ggsave (file, plotInput(), device = png)' zamiast tworzyć funkcję urządzenia (wrapper). –
@sebkopf Tęskniłem za twoją odpowiedzią w przeciągu roku i trochę! – alexwhan
@Yihui To rozwiązanie nie działa dla mnie: R wersja 3.1.0, ggplot2_1.0.0 shiny_0.10.1. Zostanie wyświetlone okno Zapisz, kliknij przycisk Zapisz, ale plik nie zostanie zapisany. Czy ktoś może potwierdzić? – zx8754