Hello @AllanSath,
It is very difficult to see from here exactly how your app works. See the below example that you can paste and run in your own terminal showing isolate in action. As you can see it is within the renderPlot call here.
library(shiny)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
tabsetPanel(id = "tabset",
tabPanel("Uniform",
numericInput("unifCount", "Count", 100),
sliderInput("unifRange", "Range", min = -100, max = 100, value = c(-10, 10))
),
tabPanel("Normal",
numericInput("normCount", "Count", 100),
numericInput("normMean", "Mean", 0),
numericInput("normSd", "Std Dev", 1)
)
),
actionButton("go", "Plot")
),
mainPanel(
plotOutput("plot")
)
)
)
server <- function(input, output){
v <- reactiveValues(doPlot = FALSE)
observeEvent(input$go, {
# 0 will be coerced to FALSE
# 1+ will be coerced to TRUE
v$doPlot <- input$go
})
observeEvent(input$tabset, {
v$doPlot <- FALSE
})
output$plot <- renderPlot({
if (v$doPlot == FALSE) return()
isolate({
data <- if (input$tabset == "Uniform") {
runif(input$unifCount, input$unifRange[1], input$unifRange[2])
} else {
rnorm(input$normCount, input$normMean, input$normSd)
}
hist(data)
})
})
}
shinyApp(ui, server)