在我的闪亮应用程序中,我有一个日期范围输入和一组复选框。复选框选项基于输入$ dateRange确定。我遇到了每次更改日期范围时重绘两次绘图的问题。第一次重绘时,它将使用新的日期范围,但旧的复选框选项。然后更新复选框选项并再次重绘图。
有没有办法阻止多次重绘图,只有在所有其他UI元素都更新后才绘制它?
server.R code snippet
# Check boxes for variants in run
output$choose_variants <- renderUI({
# Get the variants associated with the run
dat <- loadVariants(input$dateRange[1], input$dateRange[2])
if(is.null(dat))
return()
# Create the checkboxes and select them all by default
checkboxGroupInput("variants", "Variants",
choices = dat$variant,
selected = dat$variant)
})
# Output the data
output$plot1 <- renderPlot({
runLocations <- loadRunsBetweenDates(input$dateRange[1], input$dateRange[2], input$variants)
#ggplot()
})
ui.R代码段
sidebarPanel(
dateRangeInput('dateRange',
label = 'Date range',
start = Sys.Date(), end = Sys.Date()
),
uiOutput("choose_variants")
),
答案 0 :(得分:3)
由于input$variants
总是在日期范围滑块发生变化时发生变化,因此您可以仅根据input$variants
创建情节。
# Output the data
output$plot1 <- renderPlot({
# outside of isolate statement, so this plot becomes dependent on its value.
input$variants
# put this in an isolate block, so it doesn´t trigger an invalidation.
isolate(runLocations <- loadRunsBetweenDates(input$dateRange[1], input$dateRange[2], input$variants))
#ggplot()
})
希望这有帮助!
编辑:替代方案,基于评论中的条件
您可以创建一个被动反应,并使您的情节仅依赖于以下内容:
loadedVariants <- reactive({
loadVariants(input$dateRange[1], input$dateRange[2])
})
# Output the data
output$plot1 <- renderPlot({
# outside of isolate statement, so this plot becomes dependent on its value.
loadedVariants()
# put this in an isolate block, so it doesn´t trigger an invalidation.
isolate(runLocations <- loadRunsBetweenDates(input$dateRange[1], input$dateRange[2], input$variants))
#ggplot()
})