Deprecated lifecycle

ctxt_stack() can be tricky to use in real code because all intervening frames are returned with the stack, including those at ctxt_stack() own call site. stack_trim() makes it easy to remove layers of intervening calls.

stack_trim(stack, n = 1)

Arguments

stack

An evaluation stack.

n

The number of call frames (not eval frames) to trim off the top of the stack. In other words, the number of layers of intervening frames to trim.

Life cycle

These functions are deprecated and replaced by trace_back().

Examples

# Intervening frames appear on the evaluation stack: identity(identity(ctxt_stack()))
#> [[1]] #> <frame 37> (35) #> expr: identity(ctxt_stack()) #> env: [local 0x55ac9edeb268] #> #> [[2]] #> <frame 36> (35) #> expr: identity(identity(ctxt_stack())) #> env: [local 0x55ac9edeb380] #> #> [[3]] #> <frame 35> (34) #> expr: eval(expr, envir, enclos) #> env: [local 0x55ac9d756ce0] #> #> [[4]] #> <frame 34> (24) #> expr: eval(expr, envir, enclos) #> env: [local 0x55ac9edeb540] #> #> [[5]] #> <frame 33> (24) #> expr: withVisible(eval(expr, envir, enclos)) #> env: [local 0x55ac9edeb770] #> #> [[6]] #> <frame 32> (24) #> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, <...> #> env: [local 0x55ac9edebd20] #> #> [[7]] #> <frame 31> (30) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [local 0x55ac9edec298] #> #> [[8]] #> <frame 30> (29) #> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]]) #> env: [local 0x55ac9edec5e0] #> #> [[9]] #> <frame 29> (28) #> expr: tryCatchList(expr, classes, parentenv, handlers) #> env: [local 0x55ac9ede8af8] #> #> [[10]] #> <frame 28> (27) #> expr: tryCatch(expr, error = function(e) { <...> #> env: [local 0x55ac9ede91c0] #> #> [[11]] #> <frame 27> (26) #> expr: try(f, silent = TRUE) #> env: [local 0x55ac9ede93f0] #> #> [[12]] #> <frame 26> (24) #> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir, <...> #> env: [local 0x55ac9ede9578] #> #> [[13]] #> <frame 25> (24) #> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr, <...> #> env: [local 0x55ac9ede9658] #> #> [[14]] #> <frame 24> (23) #> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, <...> #> env: [frame 0x55ac9d5af490] #> #> [[15]] #> <frame 23> (22) #> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE) #> env: [frame 0x55ac9dcf4458] #> #> [[16]] #> <frame 22> (21) #> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic, <...> #> env: [frame 0x55ac9dcf2ea0] #> #> [[17]] #> <frame 21> (20) #> expr: highlight_examples(code, topic, env = env) #> env: [frame 0x55ac9e67eef8] #> #> [[18]] #> <frame 20> (19) #> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()), <...> #> env: [frame 0x55ac9d167058] #> #> [[19]] #> <frame 19> (17) #> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run) #> env: [frame 0x55aca07b93f8] #> #> [[20]] #> <frame 18> (17) #> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples, <...> #> env: [frame 0x55ac9ac34980] #> #> [[21]] #> <frame 17> (16) #> expr: .f(.x[[i]], ...) #> env: [frame 0x55ac9e985010] #> #> [[22]] #> <frame 16> (15) #> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy, <...> #> env: [frame 0x55ac99cffc88] #> #> [[23]] #> <frame 15> (14) #> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run, <...> #> env: [frame 0x55ac998fdff8] #> #> [[24]] #> <frame 14> (13) #> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run, <...> #> env: [frame 0x55ac97a84878] #> #> [[25]] #> <frame 13> (12) #> expr: pkgdown::build_site(...) #> env: [frame 0x55ac97a44830] #> #> [[26]] #> <frame 12> (0) #> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet) <...> #> env: [frame 0x55ac9648ce00] #> #> [[27]] #> <frame 11> (0) #> expr: (function (what, args, quote = FALSE, envir = parent.frame()) <...> #> env: [frame 0x55ac964a0590] #> #> [[28]] #> <frame 10> (0) #> expr: do.call(do.call, c(readRDS("/tmp/RtmpfFDLtl/callr-fun-37b0379698bb"), <...> #> env: [frame 0x55ac976fb4c8] #> #> [[29]] #> <frame 9> (0) #> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpfFDLtl/callr-fun-37b0379698bb"), <...> #> env: [frame 0x55ac976fb848] #> #> [[30]] #> <frame 8> (0) #> expr: withCallingHandlers({ <...> #> env: [frame 0x55ac976fc098] #> #> [[31]] #> <frame 7> (6) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [frame 0x55ac976f88f8] #> #> [[32]] #> <frame 6> (5) #> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]]) #> env: [frame 0x55ac976f8c40] #> #> [[33]] #> <frame 5> (2) #> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh]) #> env: [frame 0x55ac976f8ff8] #> #> [[34]] #> <frame 4> (3) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [frame 0x55ac976f95a8] #> #> [[35]] #> <frame 3> (2) #> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]), <...> #> env: [frame 0x55ac976f98f0] #> #> [[36]] #> <frame 2> (1) #> expr: tryCatchList(expr, classes, parentenv, handlers) #> env: [frame 0x55ac976f9c38] #> #> [[37]] #> <frame 1> (0) #> expr: tryCatch(withCallingHandlers({ <...> #> env: [frame 0x55ac976fa370] #> #> [[38]] #> <frame 0> [global] #> expr: NULL #> env: [global] #> #> attr(,"class") #> [1] "ctxt_stack" "stack"
# stack_trim() will trim the first n layers of calls: stack_trim(identity(identity(ctxt_stack())))
#> [[1]] #> <frame 35> (34) #> expr: eval(expr, envir, enclos) #> env: [local 0x55ac9d756ce0] #> #> [[2]] #> <frame 34> (24) #> expr: eval(expr, envir, enclos) #> env: [local 0x55ac9dda1670] #> #> [[3]] #> <frame 33> (24) #> expr: withVisible(eval(expr, envir, enclos)) #> env: [local 0x55ac9dda18a0] #> #> [[4]] #> <frame 32> (24) #> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, <...> #> env: [local 0x55ac9dda1e50] #> #> [[5]] #> <frame 31> (30) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [local 0x55ac9dda2400] #> #> [[6]] #> <frame 30> (29) #> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]]) #> env: [local 0x55ac9dd9e918] #> #> [[7]] #> <frame 29> (28) #> expr: tryCatchList(expr, classes, parentenv, handlers) #> env: [local 0x55ac9dd9ec60] #> #> [[8]] #> <frame 28> (27) #> expr: tryCatch(expr, error = function(e) { <...> #> env: [local 0x55ac9dd9f360] #> #> [[9]] #> <frame 27> (26) #> expr: try(f, silent = TRUE) #> env: [local 0x55ac9dd9f590] #> #> [[10]] #> <frame 26> (24) #> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir, <...> #> env: [local 0x55ac9dd9f718] #> #> [[11]] #> <frame 25> (24) #> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr, <...> #> env: [local 0x55ac9dd9f7f8] #> #> [[12]] #> <frame 24> (23) #> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, <...> #> env: [frame 0x55ac9cfed128] #> #> [[13]] #> <frame 23> (22) #> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE) #> env: [frame 0x55ac9dcf4458] #> #> [[14]] #> <frame 22> (21) #> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic, <...> #> env: [frame 0x55ac9dcf2ea0] #> #> [[15]] #> <frame 21> (20) #> expr: highlight_examples(code, topic, env = env) #> env: [frame 0x55ac9e67eef8] #> #> [[16]] #> <frame 20> (19) #> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()), <...> #> env: [frame 0x55ac9d167058] #> #> [[17]] #> <frame 19> (17) #> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run) #> env: [frame 0x55aca07b93f8] #> #> [[18]] #> <frame 18> (17) #> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples, <...> #> env: [frame 0x55ac9ac34980] #> #> [[19]] #> <frame 17> (16) #> expr: .f(.x[[i]], ...) #> env: [frame 0x55ac9e985010] #> #> [[20]] #> <frame 16> (15) #> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy, <...> #> env: [frame 0x55ac99cffc88] #> #> [[21]] #> <frame 15> (14) #> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run, <...> #> env: [frame 0x55ac998fdff8] #> #> [[22]] #> <frame 14> (13) #> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run, <...> #> env: [frame 0x55ac97a84878] #> #> [[23]] #> <frame 13> (12) #> expr: pkgdown::build_site(...) #> env: [frame 0x55ac97a44830] #> #> [[24]] #> <frame 12> (0) #> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet) <...> #> env: [frame 0x55ac9648ce00] #> #> [[25]] #> <frame 11> (0) #> expr: (function (what, args, quote = FALSE, envir = parent.frame()) <...> #> env: [frame 0x55ac964a0590] #> #> [[26]] #> <frame 10> (0) #> expr: do.call(do.call, c(readRDS("/tmp/RtmpfFDLtl/callr-fun-37b0379698bb"), <...> #> env: [frame 0x55ac976fb4c8] #> #> [[27]] #> <frame 9> (0) #> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpfFDLtl/callr-fun-37b0379698bb"), <...> #> env: [frame 0x55ac976fb848] #> #> [[28]] #> <frame 8> (0) #> expr: withCallingHandlers({ <...> #> env: [frame 0x55ac976fc098] #> #> [[29]] #> <frame 7> (6) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [frame 0x55ac976f88f8] #> #> [[30]] #> <frame 6> (5) #> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]]) #> env: [frame 0x55ac976f8c40] #> #> [[31]] #> <frame 5> (2) #> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh]) #> env: [frame 0x55ac976f8ff8] #> #> [[32]] #> <frame 4> (3) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [frame 0x55ac976f95a8] #> #> [[33]] #> <frame 3> (2) #> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]), <...> #> env: [frame 0x55ac976f98f0] #> #> [[34]] #> <frame 2> (1) #> expr: tryCatchList(expr, classes, parentenv, handlers) #> env: [frame 0x55ac976f9c38] #> #> [[35]] #> <frame 1> (0) #> expr: tryCatch(withCallingHandlers({ <...> #> env: [frame 0x55ac976fa370] #> #> [[36]] #> <frame 0> [global] #> expr: NULL #> env: [global] #> #> attr(,"class") #> [1] "ctxt_stack" "stack"
# Note that it also takes care of calls intervening at its own call # site: identity(identity( stack_trim(identity(identity(ctxt_stack()))) ))
#> [[1]] #> <frame 35> (34) #> expr: eval(expr, envir, enclos) #> env: [local 0x55ac9d756ce0] #> #> [[2]] #> <frame 34> (24) #> expr: eval(expr, envir, enclos) #> env: [local 0x55ac9f6d56f8] #> #> [[3]] #> <frame 33> (24) #> expr: withVisible(eval(expr, envir, enclos)) #> env: [local 0x55ac9e403d80] #> #> [[4]] #> <frame 32> (24) #> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, <...> #> env: [local 0x55ac9e404368] #> #> [[5]] #> <frame 31> (30) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [local 0x55ac9e4049c0] #> #> [[6]] #> <frame 30> (29) #> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]]) #> env: [local 0x55ac9e404d08] #> #> [[7]] #> <frame 29> (28) #> expr: tryCatchList(expr, classes, parentenv, handlers) #> env: [local 0x55ac9e405050] #> #> [[8]] #> <frame 28> (27) #> expr: tryCatch(expr, error = function(e) { <...> #> env: [local 0x55ac9e405718] #> #> [[9]] #> <frame 27> (26) #> expr: try(f, silent = TRUE) #> env: [local 0x55ac9e405948] #> #> [[10]] #> <frame 26> (24) #> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir, <...> #> env: [local 0x55ac9e401ca0] #> #> [[11]] #> <frame 25> (24) #> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr, <...> #> env: [local 0x55ac9e401d80] #> #> [[12]] #> <frame 24> (23) #> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, <...> #> env: [frame 0x55ac9f009ee0] #> #> [[13]] #> <frame 23> (22) #> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE) #> env: [frame 0x55ac9dcf4458] #> #> [[14]] #> <frame 22> (21) #> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic, <...> #> env: [frame 0x55ac9dcf2ea0] #> #> [[15]] #> <frame 21> (20) #> expr: highlight_examples(code, topic, env = env) #> env: [frame 0x55ac9e67eef8] #> #> [[16]] #> <frame 20> (19) #> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()), <...> #> env: [frame 0x55ac9d167058] #> #> [[17]] #> <frame 19> (17) #> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run) #> env: [frame 0x55aca07b93f8] #> #> [[18]] #> <frame 18> (17) #> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples, <...> #> env: [frame 0x55ac9ac34980] #> #> [[19]] #> <frame 17> (16) #> expr: .f(.x[[i]], ...) #> env: [frame 0x55ac9e985010] #> #> [[20]] #> <frame 16> (15) #> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy, <...> #> env: [frame 0x55ac99cffc88] #> #> [[21]] #> <frame 15> (14) #> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run, <...> #> env: [frame 0x55ac998fdff8] #> #> [[22]] #> <frame 14> (13) #> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run, <...> #> env: [frame 0x55ac97a84878] #> #> [[23]] #> <frame 13> (12) #> expr: pkgdown::build_site(...) #> env: [frame 0x55ac97a44830] #> #> [[24]] #> <frame 12> (0) #> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet) <...> #> env: [frame 0x55ac9648ce00] #> #> [[25]] #> <frame 11> (0) #> expr: (function (what, args, quote = FALSE, envir = parent.frame()) <...> #> env: [frame 0x55ac964a0590] #> #> [[26]] #> <frame 10> (0) #> expr: do.call(do.call, c(readRDS("/tmp/RtmpfFDLtl/callr-fun-37b0379698bb"), <...> #> env: [frame 0x55ac976fb4c8] #> #> [[27]] #> <frame 9> (0) #> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpfFDLtl/callr-fun-37b0379698bb"), <...> #> env: [frame 0x55ac976fb848] #> #> [[28]] #> <frame 8> (0) #> expr: withCallingHandlers({ <...> #> env: [frame 0x55ac976fc098] #> #> [[29]] #> <frame 7> (6) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [frame 0x55ac976f88f8] #> #> [[30]] #> <frame 6> (5) #> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]]) #> env: [frame 0x55ac976f8c40] #> #> [[31]] #> <frame 5> (2) #> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh]) #> env: [frame 0x55ac976f8ff8] #> #> [[32]] #> <frame 4> (3) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [frame 0x55ac976f95a8] #> #> [[33]] #> <frame 3> (2) #> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]), <...> #> env: [frame 0x55ac976f98f0] #> #> [[34]] #> <frame 2> (1) #> expr: tryCatchList(expr, classes, parentenv, handlers) #> env: [frame 0x55ac976f9c38] #> #> [[35]] #> <frame 1> (0) #> expr: tryCatch(withCallingHandlers({ <...> #> env: [frame 0x55ac976fa370] #> #> [[36]] #> <frame 0> [global] #> expr: NULL #> env: [global] #> #> attr(,"class") #> [1] "ctxt_stack" "stack"
# It is especially useful when used within a function that needs to # inspect the evaluation stack but should nonetheless be callable # within nested calls without side effects: stack_util <- function() { # n = 2 means that two layers of intervening calls should be # removed: The layer at ctxt_stack()'s call site (including the # stack_trim() call), and the layer at stack_util()'s call. stack <- stack_trim(ctxt_stack(), n = 2) stack } user_fn <- function() { # A user calls your stack utility with intervening frames: identity(identity(stack_util())) } # These intervening frames won't appear in the evaluation stack identity(user_fn())
#> [[1]] #> <frame 37> (35) #> expr: user_fn() #> env: [local 0x55ac9d9f6280] #> #> [[2]] #> <frame 36> (35) #> expr: identity(user_fn()) #> env: [local 0x55ac9d9f62f0] #> #> [[3]] #> <frame 35> (34) #> expr: eval(expr, envir, enclos) #> env: [local 0x55ac9d756ce0] #> #> [[4]] #> <frame 34> (24) #> expr: eval(expr, envir, enclos) #> env: [local 0x55ac9d9f64b0] #> #> [[5]] #> <frame 33> (24) #> expr: withVisible(eval(expr, envir, enclos)) #> env: [local 0x55ac9d9f66e0] #> #> [[6]] #> <frame 32> (24) #> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, <...> #> env: [local 0x55ac9d9f6c90] #> #> [[7]] #> <frame 31> (30) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [local 0x55ac9d9f33d8] #> #> [[8]] #> <frame 30> (29) #> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]]) #> env: [local 0x55ac9d9f3720] #> #> [[9]] #> <frame 29> (28) #> expr: tryCatchList(expr, classes, parentenv, handlers) #> env: [local 0x55ac9d9f3a68] #> #> [[10]] #> <frame 28> (27) #> expr: tryCatch(expr, error = function(e) { <...> #> env: [local 0x55ac9d9f4130] #> #> [[11]] #> <frame 27> (26) #> expr: try(f, silent = TRUE) #> env: [local 0x55ac9d9f4360] #> #> [[12]] #> <frame 26> (24) #> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir, <...> #> env: [local 0x55ac9d9f44e8] #> #> [[13]] #> <frame 25> (24) #> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr, <...> #> env: [local 0x55ac9d9f45c8] #> #> [[14]] #> <frame 24> (23) #> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, <...> #> env: [frame 0x55ac9e3a3db8] #> #> [[15]] #> <frame 23> (22) #> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE) #> env: [frame 0x55ac9dcf4458] #> #> [[16]] #> <frame 22> (21) #> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic, <...> #> env: [frame 0x55ac9dcf2ea0] #> #> [[17]] #> <frame 21> (20) #> expr: highlight_examples(code, topic, env = env) #> env: [frame 0x55ac9e67eef8] #> #> [[18]] #> <frame 20> (19) #> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()), <...> #> env: [frame 0x55ac9d167058] #> #> [[19]] #> <frame 19> (17) #> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run) #> env: [frame 0x55aca07b93f8] #> #> [[20]] #> <frame 18> (17) #> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples, <...> #> env: [frame 0x55ac9ac34980] #> #> [[21]] #> <frame 17> (16) #> expr: .f(.x[[i]], ...) #> env: [frame 0x55ac9e985010] #> #> [[22]] #> <frame 16> (15) #> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy, <...> #> env: [frame 0x55ac99cffc88] #> #> [[23]] #> <frame 15> (14) #> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run, <...> #> env: [frame 0x55ac998fdff8] #> #> [[24]] #> <frame 14> (13) #> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run, <...> #> env: [frame 0x55ac97a84878] #> #> [[25]] #> <frame 13> (12) #> expr: pkgdown::build_site(...) #> env: [frame 0x55ac97a44830] #> #> [[26]] #> <frame 12> (0) #> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet) <...> #> env: [frame 0x55ac9648ce00] #> #> [[27]] #> <frame 11> (0) #> expr: (function (what, args, quote = FALSE, envir = parent.frame()) <...> #> env: [frame 0x55ac964a0590] #> #> [[28]] #> <frame 10> (0) #> expr: do.call(do.call, c(readRDS("/tmp/RtmpfFDLtl/callr-fun-37b0379698bb"), <...> #> env: [frame 0x55ac976fb4c8] #> #> [[29]] #> <frame 9> (0) #> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpfFDLtl/callr-fun-37b0379698bb"), <...> #> env: [frame 0x55ac976fb848] #> #> [[30]] #> <frame 8> (0) #> expr: withCallingHandlers({ <...> #> env: [frame 0x55ac976fc098] #> #> [[31]] #> <frame 7> (6) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [frame 0x55ac976f88f8] #> #> [[32]] #> <frame 6> (5) #> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]]) #> env: [frame 0x55ac976f8c40] #> #> [[33]] #> <frame 5> (2) #> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh]) #> env: [frame 0x55ac976f8ff8] #> #> [[34]] #> <frame 4> (3) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [frame 0x55ac976f95a8] #> #> [[35]] #> <frame 3> (2) #> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]), <...> #> env: [frame 0x55ac976f98f0] #> #> [[36]] #> <frame 2> (1) #> expr: tryCatchList(expr, classes, parentenv, handlers) #> env: [frame 0x55ac976f9c38] #> #> [[37]] #> <frame 1> (0) #> expr: tryCatch(withCallingHandlers({ <...> #> env: [frame 0x55ac976fa370] #> #> [[38]] #> <frame 0> [global] #> expr: NULL #> env: [global] #> #> attr(,"class") #> [1] "ctxt_stack" "stack"