On 12/12/2015 9:08 AM, Hadley Wickham wrote:
On Sat, Dec 12, 2015 at 3:54 AM, Martin Maechler
<maech...@stat.math.ethz.ch> wrote:
Henrik Bengtsson <henrik.bengts...@gmail.com>
     on Fri, 11 Dec 2015 08:20:55 -0800 writes:

     > On Fri, Dec 11, 2015 at 8:10 AM, David Winsemius 
<dwinsem...@comcast.net> wrote:
     >>
     >>> On Dec 11, 2015, at 5:38 AM, Dario Beraldi <dario.bera...@gmail.com> 
wrote:
     >>>
     >>> Hi All,
     >>>
     >>> I'd like to understand the reason why stopifnot(logical(0) == x) 
doesn't
     >>> (never?) throw an exception, at least in these cases:
     >>
     >> The usual way to test for a length-0 logical object is to use length():
     >>
     >> x <- logical(0)
     >>
     >> stopifnot( !length(x) & mode(x)=="logical" )

     > I found

     > stopifnot(!length(x), mode(x) == "logical")

     > more helpful when troubleshooting, because it will tell you whether
     > it's !length(x) or mode(x) == "logical" that is FALSE.  It's as if you
     > wrote:

     > stopifnot(!length(x))
     > stopifnot(mode(x) == "logical")

     > /Henrik

Yes, indeed, thank you Henrik  --- and Jeff Newmiller who's nice
humorous reply added other relevant points.

As author stopifnot(), I do agree with Dario's  "gut feeling"
that stopifnot()  "somehow ought to do the right thing"
in cases such as

    stopifnot(dim(x) == c(3,4))

which is really subtle version of his cases
{But the gut feeling is wrong, as I argue from now on}.

Personally, I think the problem there is that people forget that == is
vectorised, and for a non-vectorised equality check you really should
use identical:

stopifnot(identical(dim(x), c(3,4)))

identical() is a little pickier than people might think:

> identical(dim(matrix(0, 3,4)), c(3,4))
[1] FALSE
> identical(dim(matrix(0, 3,4)), c(3L,4L))
[1] TRUE

Duncan Murdoch

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to