From: Thomas Lumley <tlumley_at_u.washington.edu>

Date: Wed, 20 Jun 2007 09:48:58 -0700 (PDT)

https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed 20 Jun 2007 - 17:00:06 GMT

Date: Wed, 20 Jun 2007 09:48:58 -0700 (PDT)

On Wed, 20 Jun 2007, Marc Schwartz wrote:

*>
*

> If my train of thought is correct, it seems to me that the behavior

*> above distills down to the comparison between logical(0) and NA, which
**> rather than returning NA, returns logical(0).
**>
**> This would seem appropriate, given that there is no actual comparison
**> being made with NA, I think, since logical(0) is an 'empty' vector.
**>
**> However, should all(logical(0)) return TRUE or logical(0)? For example:
**>
**>> logical(0) == logical(0)
**> logical(0)
**>
**>> all(logical(0) == logical(0))
*** > [1] TRUE
**
Yes.

*>
*

> If the initial comparison of logical(0) returns logical(0), which is not

*> TRUE:
**>
**>> logical(0) == TRUE
**> logical(0)
*

Yes, they have different lengths, so they aren't equal.

> then why does all() return TRUE, if the individual comparison is not

*> TRUE? By definition from ?all:
**>
**> Given a sequence of logical arguments, a logical value indicating
**> whether or not all of the elements of x are TRUE.
*

This is the empty set question that should probably be a FAQ.

All elements of logical(0) are TRUE, in the vacuous sense that it has no elements.

The same sort of thing happens for any(logical(0)), which is FALSE; sum(numeric(0)), which is 0; prod(numeric(0)), which is 1; max(numeric(0)),which is -Inf; and min(numeric(0)), which is Inf.

This seems as though R is trying to be difficult, but there is a real benefit in terms of associativity:

all(all(x),all(y)) is always the same as all(x,y) under this definition.
prod(prod(x), prod(y)) is prod(x,y)

min(min(x),min(y)) is min(x,y)

and so on.

The general principle is that a function made by 'reducing' a vector with an associative binary operator, when applied to an empty vector, gives the identity element for the operator. The identity element for AND is TRUE.

*>
*

> Does this make any sense?

*>
*

Yes, although it is initially surprising.

-thomas

Thomas Lumley Assoc. Professor, Biostatistics tlumley_at_u.washington.edu University of Washington, Seattle ______________________________________________R-devel_at_r-project.org mailing list

https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed 20 Jun 2007 - 17:00:06 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Wed 20 Jun 2007 - 17:35:16 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel.
Please read the posting
guide before posting to the list.
*