[R] stopifnot() doesnt work as I expect it to. Are my expectations correct?

Duncan Murdoch murdoch.duncan at gmail.com
Fri May 20 16:13:27 CEST 2016

On 20/05/2016 4:44 AM, Vasanth Mohan wrote:
> Hi,
> *stopifnot(FALSE, someOtherExpression)*
> For the above code I expect stopifnot() to always say that 'FALSE is not
> TRUE' regardless of what someOtherExpression is(It may evaluate to TRUE or
> FALSE or throw an error). Is my expectation correct? Is that how
> stopifnot() is supposed to work?
> The present implementation of stopifnot() does not work like that. If
> someOtherExpression would throw an error, then stopifnot() throws that
> error instead of saying 'FALSE is not TRUE'.
> So, I modified the source code of stopifnot() and now it works as I expect
> it to.
> If that is how stopifnot() is supposed to work, then kindly let me know how
> I can contribute my solution

The documentation is unclear on that.  First it implies all expressions 
are evaluated:  "If any of the expressions in ... are not all TRUE, stop 
is called, producing an error message indicating the first of the 
elements of ... which were not true."

But then the "conceptually equivalent" code acts the way you expected.

However, it doesn't really make sense to me to put in tests that could 
themselves trigger errors unless you'd be interested in seeing those 
errors, so I don't think I'd change it.

Duncan Murdoch

More information about the R-help mailing list