From Martin Maechler <maechler@stat.math.ethz.ch>  Wed Aug 20 09:45:21 1997
From: Martin Maechler <maechler@stat.math.ethz.ch> (Martin Maechler)
Date: Wed, 20 Aug 1997 10:45:21 +0200
Subject: R-alpha:  tapply patch -- Thomas version?
In-Reply-To: <199708191857.UAA02786@aragorn.ci.tuwien.ac.at> (message from
 Kurt Hornik on Tue, 19 Aug 1997 20:57:56 +0200)
Message-ID: <199708200845.KAA02289@sophie.ethz.ch>


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


R-alpha: tapply patch -- Thomas version?
Martin Maechler