isolate(expr)
isolate
function lets you read a reactive value or expression without establishing this
relationship. The expression given to isolate()
is evaluated in the calling
environment. This means that if you assign a variable inside the
isolate()
, its value will be visible outside of the isolate()
.
If you want to avoid this, you can use local()
inside the
isolate()
. This function can also be useful for calling reactive expression at the
console, which can be useful for debugging. To do so, simply wrap the
calls to the reactive expression with isolate()
.## Not run: ------------------------------------
# observe({
# input$saveButton # Do take a dependency on input$saveButton
#
# # isolate a simple expression
# data <- get(isolate(input$dataset)) # No dependency on input$dataset
# writeToDatabase(data)
# })
#
# observe({
# input$saveButton # Do take a dependency on input$saveButton
#
# # isolate a whole block
# data <- isolate({
# a <- input$valueA # No dependency on input$valueA or input$valueB
# b <- input$valueB
# c(a=a, b=b)
# })
# writeToDatabase(data)
# })
#
# observe({
# x <- 1
# # x outside of isolate() is affected
# isolate(x <- 2)
# print(x) # 2
#
# y <- 1
# # Use local() to avoid affecting calling environment
# isolate(local(y <- 2))
# print(y) # 1
# })
#
## ---------------------------------------------
# Can also use isolate to call reactive expressions from the R console
values <- reactiveValues(A=1)
fun <- reactive({ as.character(values$A) })
isolate(fun())
# "1"
# isolate also works if the reactive expression accesses values from the
# input object, like input$x
Run the code above in your browser using DataLab