>>>>> jhallman  writes:
> Full_Name: Jeff Hallman
> Version: 1.2.2
> OS: Solaris
> Submission from: (NULL) (132.200.32.33)
>> rle(c(1, NA, 1)
> $lengths
> [1] 3
> $values
> [1] 1
> should be as in Splus:
> $lengths
> [1] 1 1 1
> $values
> [1] 1 NA 1
> The Splus implementation (which works fine in R) is:
> rle <- function(x){
>  if(!is.atomic(x))
>     stop("Argument must have an atomic mode")
>   if(length(x) == 0)
>     return(list(lengths = numeric(0), values = x))
>   if(length(x) == 1)
>     return(list(lengths = 1, values = x))
>   x.int <- match(x, unique(x))
>   ends <- c(diff(x.int) != 0, T)
>   list(lengths = diff(c(0, seq(along = x)[ends])), values = x[ends])
> }
Thanks for pointing out the problem.
I've committed a fix for 1.2.3, but I don't think that the Splus
implementation is right: when a sequence of NAs occurs, it is treated as
one value, which does not make too much sense to me.  The new R version
treats each NA separately.  (Could be changed of course to mimic the
Splus behavior.)
-k
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To:
r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._