[R] mapply echoes function call when browser() is called from within FUN
Duncan Murdoch
murdoch.duncan at gmail.com
Sat Apr 26 18:06:46 CEST 2014
On 26/04/2014, 11:42 AM, Rguy wrote:
> When mapply is applied to a function that has a call to browser() within
> it, the result can be a disastrous amount of feedback.
>
> To clarify this situation please consider the following function,
> containing a call to browser within it:
>
> plus = function(a, b) {browser(); a + b}
>
> A plain vanilla call to plus() yields the following:
>
> LAPTOP_32G_01> plus(1,2)
> Called from: plus(1, 2)
> Browse[1]>
> [1] 3
>
> Now consider the following application of mapply to plus:
>
> LAPTOP_32G_01> mapply(plus, 1:2, 1:2)
> Called from: (function (a, b)
> {
> browser()
> a + b
> })(dots[[1L]][[1L]], dots[[2L]][[1L]])
> Browse[1]>
> Called from: (function (a, b)
> {
> browser()
> a + b
> })(dots[[1L]][[2L]], dots[[2L]][[2L]])
> Browse[1]>
> [1] 2 4
>
> Notice that at each step, after the browser is called, mapply prints out
> the function call including its arguments:
>
> Called from: (function (a, b)
> {
> browser()
> a + b
> })(dots[[1L]][[1L]], dots[[2L]][[1L]])
>
> etc.
>
> In the present case this does no harm except to make things a little harder
> to read. However, if one of the inputs happens to be a data frame with a
> million rows, the entire million rows are printed to the screen. I have
> been bitten by this, which is why I am writing this note. I have a question
> and a request:
I don't see the argument values being printed in your example, and if I
replace them with dataframes, I still don't see them. So it's not quite
as simple as you describe to get the voluminous output.
Reproducible examples are needed if you want something fixed.
>
> Question: Is there some way to prevent mapply (or browser) from echoing the
> function call when browser is called from within FUN?
Yes, use the skipCalls argument to browser.
Duncan Murdoch
>
> Request: If not, could the ability to turn off this echoing be provided. As
> things stand, calling browser from within FUN, when FUN is a realistically
> big function or has realistically big arguments, is a disaster.
>
> Thanks.
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list