Displaying 1 result from an estimated 1 matches for "on_warn".
Did you mean:
  nn_warn
  
2011 May 10
0
Debugging warnings
...er)).  But it should be
possible to use withCallingHandlers to provide more flexibility.  The
function below works, but I'm wondering if there's a more elegant way
to figure out the correct frame to evaluate the action in - I'm
currently counting back one from where warning was called.
on_warning <- function(action, code) {
  q_action <- substitute(action)
  withCallingHandlers(code, warning = function(c) {
    for(i in seq_len(sys.nframe())) {
      f <- as.character(sys.call(i)[[1]])
      if (f == "warning") break;
    }
    eval(q_action, sys.frame(i - 1))
  })
}...