[R] Element-wise multiplication

Gabor Grothendieck ggrothendieck at gmail.com
Sat Apr 16 19:48:47 CEST 2005


On 4/16/05, GiusVa <sigakernel at yahoo.com> wrote:
> Dear members,
> 
> The code I am writing heavily use element-wise multiplication of
> matrix and vectors, e.g.
> 
> X, is nxm matrix
> e, is nx1 matrix
> 
> Doing Z=X*e[,], I obtain a nxm matrix, Z, where each column of X is
> multiplied (element-wise) by e. Is this the best way to achieve the
> result I want? By best way, I mean the fastest way. By profiling my
> code, 45% of the time is spent by "*" and even a 30% speedup in
> obtaining Z would greatly benefit the total speed of the code.
> 
> Aby suggestion is greatly appreciated.
> 
> |Giuseppe Ragusa
> |University of California, San Diego

Try this:

> mm <- matrix(1, 1000, 1000)
> ee <- matrix(1:100,nc=1)

> system.time(mm*ee[,], TRUE)
[1] 0.26 0.02 0.28   NA   NA

> system.time(mm*c(ee), TRUE)
[1] 0.07 0.00 0.07   NA   NA

> # if you have to do it multiple times with same ee:
> cee <- c(ee)
> system.time(mm*cee, TRUE)
[1] 0.06 0.00 0.06   NA   NA




More information about the R-help mailing list