[Rd] hasNA() / anyNA()?

Tim Hesterberg timh at insightful.com
Tue Aug 14 18:08:41 CEST 2007


S-PLUS has an anyMissing() function, for which the default is:

anyMissing.default <-
function(x){
	(length(which.na(x)) > 0)
}

This is more efficient than any(is.na(x)) in the usual case that there
are few or no missing values.  There are methods for vectors that drop
to C code, and methods for data frames and other classes.

The code below seems to presume a list, and would be very slow for vectors.

For reasons of consistency between S-PLUS and R, I would ask that an R
function be called anyMissing rather than hasNA or anyNA.

Tim Hesterberg

>is there a hasNA() / an anyNA() function in R?  Of course,
>
>hasNA <- function(x) {
>  any(is.na(x));
>}
>
>would do, but that would scan all elements in 'x' and then do the
>test.  I'm looking for a more efficient implementation that returns
>TRUE at the first NA, e.g.
>
>hasNA <- function(x) {
>  for (kk in seq(along=x)) {
>    if (is.na(x[kk]))
>      return(TRUE);
>  }
>  FALSE;
>}
>
>Cheers
>
>Henrik



More information about the R-devel mailing list