R-alpha: tapply patch -- Thomas version?

Martin Maechler
Wed, 20 Aug 1997 08:45:21 -0000

>>>>> Patrick Lindsey writes:
> A few problems in R-0.50-a3 (which were also in R-0.49):
> 1)
> y <- c(10,11,12,13,14,NA,NA)
> n <- length(y)
> missed <- (1:n)[is.na(y)]
> notmissed <- (1:n)[!is.na(y)]
> blocks <- cut(missed,breaks=c(0,notmissed,n+1))
> a <- function(v) {
> 	q <- range(v)
> 	c(q[1]-1,q[2]+1)
> }
> brackets <- tapply(missed,blocks,a)

> This codes gives the following in S:

> .....

    Kurt> I think the patch below (which should make it into the next set of
    Kurt> patches) fixes that.

yes, it does fix the problem -- and it has been in the current source tree
for about 10 days...

   Kurt> (Except for the differences in cut() ...)

    Kurt> --- src/library/base/funs/tapply.orig	Fri Feb  7 01:08:31 1997
    Kurt> +++ src/library/base/funs/tapply	Sun Aug 10 21:57:31 1997
    Kurt> @@ -14,7 +14,7 @@
    Kurt> index <- as.factor(INDEX[[i]])
    Kurt> if (length(index) != nx)
    Kurt> stop("arguments must have same length")
    Kurt> -		namelist[[i]] <- levels(index)
    Kurt> +		namelist[[i]] <- unique(levels(index)[index])
    Kurt> extent[[i]] <- nlevels(index)
    Kurt> group <- group + ngroup * (codes(index) - 1)
    Kurt> ngroup <- ngroup * nlevels(index)

Thomas, what does your function do differently ?

-- Martin
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
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
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-