Dear R-users, I would like to follow-up on a old thread by Hadley Wickham about capturing warnings with capture.output. My goal is to evaluate a function call and capture the results of the function call plus warning calls and messages if a warning is returned. For instance, in the following case, I would like to capture the 3 lines of text returned by R > log(-1) [1] NaN Warning message: In log(-1) : NaNs produced In Hadley's thread, a combination of capture.output and a custom "withWarnings" function was proposed to capture warnings but this seems to only capture the warning message and the results of the function call. withWarnings <- function(expr) { wHandler <- function(w) { cat(w$message, "\n") invokeRestart("muffleWarning") } withCallingHandlers(expr, warning = wHandler) } > out <- capture.output(withWarnings(log(-1))) > out [1] "NaNs produced " "[1] NaN" In withWarnings, the wHandler function manipulate an object w, which I understand to be a list with a call and message levels. All my attempts to manipulate w$call failed because w$call is of class language. I don't know how to work with this class and I would appreciate any advise on how to process this type of object. Again, the goal is to store both call and message in the output of the withWarnings function. Thank you Sebastien