[R] all(logical(0)) and any(logical(0))

Thomas Lumley tlumley at u.washington.edu
Thu Apr 15 17:05:35 CEST 2004


On Thu, 15 Apr 2004, Liaw, Andy wrote:

> Dear R-help,
>
> I was bitten by the behavior of all() when given logical(0):  It is TRUE!
> (And any(logical(0)) is FALSE.)  Wouldn't it be better to return logical(0)
> in both cases?

No, it wouldn't.  The convention that "For all x in A: P(x)" is true
whenever A is empty and that "There exists x in A: P(x)$ is false is very
old.  It is also useful that all(x) && all(y) is necessarily the same as
all(x,y), which wouldn't be true under your suggestion.


The basic principle is that elementwise operations give zero-length
vectors for zero-length operands, but reducing operations that collapse a
vector to a scalar give a suitable scalar.

	-thomas


> The problem surfaced because some un-named individual called randomForest(x,
> y, xtest, ytest,...), and gave y as a two-level factor, but ytest as just
> numeric vector.  I thought I check for that in my code by testing for
>
> if (!all(levels(y) == levels(ytest))) stop(...)
>
> but levels() on a non-factor returns NULL, and the comparison ended up being
> logical(0).  Since all(logical(0)) is TRUE, the error is not flagged.
>
> Best,
> Andy
>
> Andy Liaw, PhD
> Biometrics Research      PO Box 2000, RY33-300
> Merck Research Labs           Rahway, NJ 07065
> mailto:andy_liaw at merck.com        732-594-0820
>
>
>
> ------------------------------------------------------------------------------
> Notice:  This e-mail message, together with any attachments,...{{dropped}}
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>

Thomas Lumley			Assoc. Professor, Biostatistics
tlumley at u.washington.edu	University of Washington, Seattle




More information about the R-help mailing list