如何在downloadHandler
中调用使用被动功能创建的情节而不再重新定义?
非工作示例:
# Part of server.R
output$tgPlot <- renderPlot({
plot1 <-ggplot(iris[iris$Species==input$species,])+geom_point(aes(Sepal.Length ,Sepal.Width))
print(plot1)
} )
output$plotsave <- downloadHandler(
filename = 'plot.pdf',
content = function(file){
pdf(file = file, width=12, height=4)
tgPlot()
dev.off()
}
)
为什么不能在downloadHandler
中调用tgPlot()?还有另一种方式吗?
答案 0 :(得分:5)
tgPlot()
是否是在其他地方定义的函数?我没有看到你定义它。
您可能希望在常规(非反应)函数中定义绘图代码,您可以从这两个函数中引用它,a:
tgPlot <- function(inputSpecies){
plot1 <-ggplot(iris[iris$Species==inputSpecies,])+geom_point(aes(Sepal.Length ,Sepal.Width))
print(plot1)
}
output$tgPlot <- renderPlot({
tgPlot(input$species)
})
output$plotsave <- downloadHandler(
filename = 'plot.pdf',
content = function(file){
pdf(file = file, width=12, height=4)
tgPlot(input$species)
dev.off()
}
)
这为您提供了一个可以生成情节的功能。然后可以在反应renderPlot
上下文中引用此函数以生成反应性图,或生成PDF。