Prof. Brian Ripley wrote:
> On Wed, 6 Sep 2006, Christos Hatzis wrote:
>
> > See ?sweep
> >
> > sweep(a, 2, a[1,],"/")
>
> That is less efficient than
>
> a/rep(a[1,], each=nrow(a))
*My* first instinct was to use
t(t(a)/a[1,])
(which has not heretofore been suggested).
This seems to be more efficient still (at least in respect of Prof.
Grothendieck's toy example) by between 20 and 25 percent:
> a <- matrix(1:24,4)
> system.time(for(i in 1:1000) junk <- a / rep(a[1,], each = 4))
[1] 0.690 0.080 1.051 0.000 0.000
> system.time(for(i in 1:1000) junk <- t(t(a)/a[1,]))
[1] 0.520 0.120 0.647 0.000 0.000
> system.time(for(i in 1:10000) junk <- a / rep(a[1,], each = 4))
[1] 7.08 0.99 10.08 0.00 0.00
> system.time(for(i in 1:10000) junk <- t(t(a)/a[1,]))
[1] 5.530 0.940 7.856 0.000 0.000
cheers,
Rolf Turner
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.