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)
Arguments
x: For freezeReactiveValue, a reactiveValues()
object (like input); for freezeReactiveVal, a reactiveVal() object.
name: The name of a value in the reactiveValues() object.
Examples
## Only run this examples in interactive R sessionsif(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)}