R-alpha: A few bugs in R-0.50-a3.

Kurt Hornik Kurt.Hornik@ci.tuwien.ac.at
Tue, 19 Aug 1997 20:57:56 +0200


>>>>> 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:
>> brackets
> $"0+ thru 1":
> NULL

> $"1+ thru 2":
> NULL

> $"2+ thru 3":
> NULL

> $"3+ thru 4":
> NULL

> $"4+ thru 5":
> NULL

> $"5+ thru 8":
> [1] 5 8

>> 

> And the following in R:

>> brackets <- tapply(missed,blocks,a)
> Error: names attribute must be same length as the vector

> I also had similar problems when using "lm" with data containing NA's
> but could not find back a precise example...

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

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

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