[Rd] Any interest in "merge" and "by" implementations specifically for so

Kevin B. Hendricks kevin.hendricks at sympatico.ca
Wed Aug 2 03:09:32 CEST 2006


Hi,

My last word on this topic until I get a working external R package ...

The igroup code has now been validated both with and without NAs and  
with and without removing them.  Thanks to Bill, Tom, Thomas, and  
everyone for your helpful comments and hints.

The results for my validation run are here in case anyone is interested.
So my code now officially works.  If anyone wants patches against the  
latest development version of R to play around with (do your own  
timings, etc), please just let me know and I will send the patches  
privately.

I will start to work on an external package next week when I have  
more time.

Hope this helps,

Kevin


 > x <- rnorm(2e6)
 > i <- rep(1:1e6,2)
 > y <- runif(2e6)
 > is.na(x[y > 0.8]) <- TRUE
 >
 > suma = unlist(lapply(split(x,i),sum,na.rm=T))
 > names(suma) <- NULL
 > sumb = igroupSums(x,i,na.rm=T)
 > all.equal(suma,sumb)
[1] TRUE
 >
 >
 > suma = unlist(lapply(split(x,i),sum,na.rm=F))
 > names(suma) <- NULL
 > sumb = igroupSums(x,i,na.rm=F)
 > all.equal(suma,sumb)
[1] TRUE
 >
 >
 > maxa = unlist(lapply(split(x,i),max,na.rm=T))
There were 50 or more warnings (use warnings() to see the first 50)
 > names(maxa)<-NULL
 > maxb <- igroupMaxs(x,i,na.rm=T)
 > all.equal(maxa, maxb)
[1] TRUE
 >
 >
 > maxa = unlist(lapply(split(x,i),max,na.rm=F))
 > names(maxa)<-NULL
 > maxb <- igroupMaxs(x,i,na.rm=F)
 > all.equal(maxa, maxb)
[1] TRUE
 >
 >
 > mina = unlist(lapply(split(x,i),min,na.rm=T))
There were 50 or more warnings (use warnings() to see the first 50)
 > names(mina)<-NULL
 > minb <- igroupMins(x,i,na.rm=T)
 > all.equal(mina, minb)
[1] TRUE
 >
 >
 > mina = unlist(lapply(split(x,i),min,na.rm=F))
 > names(mina)<-NULL
 > minb <- igroupMins(x,i,na.rm=F)
 > all.equal(mina, minb)
[1] TRUE
 >
 >
 > meana = unlist(lapply(split(x,i),mean,na.rm=T))
 > names(meana)<-NULL
 > meanb <- igroupMeans(x,i,na.rm=T)
 > all.equal(meana, meanb)
[1] TRUE
 >
 > meana = unlist(lapply(split(x,i),mean,na.rm=F))
 > names(meana)<-NULL
 > meanb <- igroupMeans(x,i,na.rm=F)
 > all.equal(meana, meanb)
[1] TRUE
 >
 >
 > proda = unlist(lapply(split(x,i),prod,na.rm=T))
 > names(proda)<-NULL
 > prodb <- igroupProds(x,i,na.rm=T)
 > all.equal(proda, prodb)
[1] TRUE
 >
 > proda = unlist(lapply(split(x,i),prod,na.rm=F))
 > names(proda)<-NULL
 > prodb <- igroupProds(x,i,na.rm=F)
 > all.equal(proda, prodb)
[1] TRUE
 >
 >
 > cnta <- unlist(lapply(split(x,i),length))
 > names(cnta) <- NULL
 > cntb <- igroupCounts(x,i,na.rm=F)
 > all.equal(cnta,cntb)
[1] TRUE
 >
 >
 > anya <- unlist(lapply(split((x>1.0),i),any,na.rm=T))
 > names(anya)<-NULL
 > anyb <- igroupAnys((x>1.0),i,na.rm=T)
 > all.equal(anya,anyb)
[1] TRUE
 >
 >
 > anya <- unlist(lapply(split((x>1.0),i),any,na.rm=F))
 > names(anya)<-NULL
 > anyb <- igroupAnys((x>1.0),i,na.rm=F)
 > all.equal(anya,anyb)
[1] TRUE
 >
 >
 > alla <- unlist(lapply(split((x>1.0),i),all,na.rm=T))
 > names(alla)<-NULL
 > allb <- igroupAlls((x>1.0),i,na.rm=T)
 > all.equal(alla,allb)
[1] TRUE
 >
 >
 > alla <- unlist(lapply(split((x>1.0),i),all,na.rm=F))
 > names(alla)<-NULL
 > allb <- igroupAlls((x>1.0),i,na.rm=F)
 > all.equal(alla,allb)
[1] TRUE



More information about the R-devel mailing list