From vdergachev at rcgardis.com  Tue Nov 28 21:54:54 2006
From: vdergachev at rcgardis.com (Vladimir Dergachev)
Date: Tue, 28 Nov 2006 15:54:54 -0500
Subject: [Rd] data frame subset patch
Message-ID: <200611281554.54593.vdergachev@rcgardis.com>


Hi all, 

   Here is a patch that significantly speeds up `[.data.frame` operator.
It applies cleanly to both 2.4.0 and svn trunk. Make check was OK for 2.40.
(for svn trunk it fails even without this patch.. ).

   What it does - we get rid of class and attr statements that modify incoming 
data frame and use explicit calls to .subset and .subset2 instead.

Test case:

N<-100000
T<-data.frame(a=1:N, b=rnorm(N), c=as.character(round(runif(N)*10)))
system.time({X<-0 ; for(i in 1:1000)X<-X+T[i,2]})

Without patch the output on my system is
[1]  8.488  2.436 10.926  0.000  0.000


With this patch the output is:
[1] 1.084 0.624 1.707 0.000 0.000

                    thank you !

                             Vladimir Dergachev


[Rd] data frame subset patch
Vladimir Dergachev