[R] how to test for the empty set
macrakis at alum.mit.edu
Mon Nov 24 22:16:50 CET 2008
Doesn't length(x)=0 do the trick?
In general, the cardinality of a set represented as a vector or list
of elements is length(unique(x)). Unique uses `identical` as its
equivalence relation, so length( unique( list( 1L, 1.0, 1+0i,
as.logical(NA), as.character(NA), as.numeric(NA), NULL, logical(),
character() ))) => 9.
On Mon, Nov 24, 2008 at 12:41 PM, G. Jay Kerns <gkerns at ysu.edu> wrote:
> Dear R-help,
> I first thought that the empty set (for a vector) would be NULL.
> x <- c()
> However, the documentation seems to make clear that there _many_ empty
> sets depending on the vector's mode, namely, numeric(0), character(0),
> logical(0), etc. This is borne out by
> y <- letters[1:3]
> z <- letters[4:6]
> which, of course, is non-NULL:
> is.null(character(0)) # FALSE
> So, how can we test if a vector is, say, character(0)? The following
> doesn't (seem to) work:
> x <- character(0)
> x == character(0) # logical(0)
> More snooping led to the following:
> and at the bottom of the page it says "logical(0) is an empty set,
> thus is TRUE". However, I get
> isTRUE(logical(0)) # FALSE
> but, on the other hand,
> all.equal(x, character(0)) # TRUE
> This would seem to be the solution, but am I missing something? and in
> particular, is there an elegant way to check in the case that the mode
> of the vector is not already known?
> Thanks in advance for any insight you may have.
> G. Jay Kerns, Ph.D.
> Associate Professor
> Department of Mathematics & Statistics
> Youngstown State University
> Youngstown, OH 44555-0002 USA
> Office: 1035 Cushwa Hall
> Phone: (330) 941-3310 Office (voice mail)
> -3302 Department
> -3170 FAX
> E-mail: gkerns at ysu.edu
> R-help at r-project.org mailing list
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help