[R] Matrix element-by-element multiplication

waddawanna waddawanna at hotmail.com
Wed Sep 30 01:49:18 CEST 2015


Hello Steven,

It looks like, there is no in-built function that can do GAUSS ".*"
element-wise multiplication.
Now, if you want to make the desired computations in R, it is actually
preatty straightforward.

> a<-c(1,2,3)
> b<-matrix(rep(1:9,1),3,3,byrow=TRUE)
> a*b

That, should work fine. But, suppose that for some reason you have following
situation, which can make you trip for hours of sleepless nights. That is,
you have a matrix "b", where number of columns equal to number of columns of
your vector "a". That is

> b<-matrix(rep(1:9,1),3,3,byrow=TRUE);b
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9

> a <- matrix(rep(1:3,1),1,3,byrow=TRUE)
     [,1] [,2] [,3]
[1,]    1    2    3

If you try to do elementwise multilication, i.e., of those two
> b*a

You get an error that they are not comfomable, that is why, you have to
write your own function (here, 
I just write the for-loop):
> for ( i in 1:3 ) {
     foo[ ,i] = ( foo[ ,i] * bar[1,i] ) ;
   }
       [,1] [,2] [,3]
[1,]    1    4    9
[2,]    4   10   18
[3,]    7   16   27

I hope that this helped
Serge Boris Nesterenko
CEO 50 Pence Music Production
https://www.linkedin.com/in/sergenesterenko



--
View this message in context: http://r.789695.n4.nabble.com/Matrix-element-by-element-multiplication-tp3992206p4712964.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list