These functions freeze a reactiveVal()
, or an element of a
reactiveValues()
. If the value is accessed while frozen, a
"silent" exception is raised and the operation is stopped. This is the same
thing that happens if req(FALSE)
is called. The value is thawed
(un-frozen; accessing it will no longer raise an exception) when the current
reactive domain is flushed. In a Shiny application, this occurs after all of
the observers are executed. NOTE: We are considering deprecating
freezeReactiveVal
, and freezeReactiveValue
except when x
is input
.
If this affects your app, please let us know by leaving a comment on
this GitHub issue.
freezeReactiveVal(x) freezeReactiveValue(x, name)
x | For |
---|---|
name | The name of a value in the |
## Only run this examples in interactive R sessions if (interactive()) { ui <- fluidPage( selectInput("data", "Data Set", c("mtcars", "pressure")), checkboxGroupInput("cols", "Columns (select 2)", character(0)), plotOutput("plot") ) server <- function(input, output, session) { observe({ data <- get(input$data) # Sets a flag on input$cols to essentially do req(FALSE) if input$cols # is accessed. Without this, an error will momentarily show whenever a # new data set is selected. freezeReactiveValue(input, "cols") updateCheckboxGroupInput(session, "cols", choices = names(data)) }) output$plot <- renderPlot({ # When a new data set is selected, input$cols will have been invalidated # above, and this will essentially do the same as req(FALSE), causing # this observer to stop and raise a silent exception. cols <- input$cols data <- get(input$data) if (length(cols) == 2) { plot(data[[ cols[1] ]], data[[ cols[2] ]]) } }) } shinyApp(ui, server) }