【发布时间】:2014-06-11 20:12:36
【问题描述】:
我在renderPlot() 和downloadHandler() 中使用相同的反应式表达式时遇到了问题。我想使用相同的反应式表达式来减少以后的维护。我创建了两个示例,它们创建了非常简单的图形(mwe1 创建了一个可以下载的 jpeg,mwe2 没有)。我更喜欢使用创意表达的解决方案,renderPlot() 和 downloadHander() 都可以使用,如 mwe2。有人能帮我解决这个问题吗?
提前致谢!
mwe1 <- function() {
app = list(
ui = bootstrapPage(
fluidPage(
sidebarPanel(
sliderInput("mean", "choose mean", -10, 10, 1),
sliderInput("sd", "choose sd", 0, 5, 1)),
mainPanel(
plotOutput("hist"),
downloadButton("histDownload")
)
)
),
server = function(input, output) {
output$hist <- renderPlot(hist(rnorm(1000, input$mean, input$sd)))
.hist <- reactive(hist(rnorm(1000, input$mean, input$sd)))
output$histDownload <- downloadHandler(
filename = function() {
paste("hist.jpg")
},
content = function(file) {
jpeg(file, quality = 100, width = 800, height = 800)
.hist()
dev.off()
}
)
}
)
runApp(app)
}
mwe2 <- function() {
app = list(
ui = bootstrapPage(
fluidPage(
sidebarPanel(
sliderInput("mean", "choose mean", -10, 10, 1),
sliderInput("sd", "choose sd", 0, 5, 1)),
mainPanel(
plotOutput("hist"),
downloadButton("histDownload")
)
)
),
server = function(input, output) {
output$hist <- renderPlot(.hist())
.hist <- reactive(hist(rnorm(1000, input$mean, input$sd)))
output$histDownload <- downloadHandler(
filename = function() {
paste("hist.jpg")
},
content = function(file) {
jpeg(file, quality = 100, width = 800, height = 800)
.hist()
dev.off()
}
)
}
)
runApp(app)
}
【问题讨论】:
-
mwe1()和mwe2()似乎都适合我。 -
downloadHandler()是否还会创建一个 jpeg,当您单击“下载”时,它会在闪亮的应用程序中显示绘图?对我来说,它不... -
没有第二个例子中的情节是空白的。
-
没错。我正是这个意思。有没有办法通过重用反应表达式来创建非空白图?