From Waclaw.Marcin.Kusnierczyk at idi.ntnu.no  Fri May  8 19:02:11 2009
From: Waclaw.Marcin.Kusnierczyk at idi.ntnu.no (Wacek Kusnierczyk)
Date: Fri, 08 May 2009 19:02:11 +0200
Subject: [Rd] proposed changes to RSiteSearch
In-Reply-To: <4A044BBB.7060304@dbmail.com>
References: <39B6DDB9048D0F4DAD42CB26AAFF0AFA07381973@usctmx1106.merck.com>	<20090507141812.GB25422@psych.upenn.edu>	<4A031A22.7080702@stats.uwo.ca>	<39B6DDB9048D0F4DAD42CB26AAFF0AFA073C46FD@usctmx1106.merck.com>	<20090507180930.GA1619@psych.upenn.edu>	<39B6DDB9048D0F4DAD42CB26AAFF0AFA073C4758@usctmx1106.merck.com>	<4A032E6F.8010001@dbmail.com>
	<4A040B66.3090803@idi.ntnu.no> <4A044BBB.7060304@dbmail.com>
Message-ID: <4A046593.8050501@idi.ntnu.no>

Romain Francois wrote:
> strapply in package gsubfn brings elegance here:
>
> > txt <- '<foo>bar</foo>'
> > rx <- "<(.*?)>(.*?)</(.*?)>"
> > strapply( txt, rx, c , perl = T )
> [[1]]
> [1] "foo" "bar" "foo"
>

sure, but this does not, in any way, make it less strange that gsub is
not vectorized. 


> Too bad you have to pay this on performance:
>
> > txt <- rep( '<foo>bar</foo>', 1000 )
> > rx <- "<(.*?)>(.*?)</(.*?)>"
> > system.time( out <- strapply( txt, rx, c , perl = T ) )
>   user  system elapsed
>  2.923   0.005   3.063
> > system.time( out2 <- sapply( paste('\\', 1:3, sep=''), function(x){
> + gsub(rx, x, txt, perl=TRUE)
> + } ) )
>   user  system elapsed
>  0.011   0.000   0.011

    strapply

and you know why.


vQ



[Rd] proposed changes to RSiteSearch
Wacek Kusnierczyk