> as Bill or Jeff explained, "the empty set is always true" My wording was that any(logical(0)) is FALSE because "there are no TRUEs in logical(0)". Bill Dunlap TIBCO Software wdunlap tibco.com
On Sat, Dec 12, 2015 at 1: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}. > > Someone writing the above would want stopifnot() to stop in the > case where x is a simple vector instead of a > matrix/data.frame/... with dimensions c(3,4) ... but it will not > because, as Bill or Jeff explained, "the empty set is always > true", and so yes indeed, you have to care about length-0 > expressions in stopifnot(). > > Indeed, in the past, I had thought of "improving" stopifnot() > by giving a warning or even stop() for logical(0) expressions, > but I quickly dismissed that idea after some experiments. > > My conclusion: Breaking such a fundamental lemma of logic as > "the empty set is always true" > will lead to all kinds of illogical situations ... so don't do that! > > Martin Maechler, > ETH Zurich > > ______________________________________________ > 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. ______________________________________________ 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.