[R] Matrix element-by-element multiplication

John McKown john.archie.mckown at gmail.com
Thu Jan 8 00:17:19 CET 2015


On Wed, Jan 7, 2015 at 5:05 PM, Steven Yen <syen04 at gmail.com> wrote:

> I like to multiple the first and second column of a 10 x 3 matrix by 100.
> The following did not work. I need this in an operation with a much larger
> scale. Any help?
>
> aa<-matrix(1:30,nrow=10,ncol=3); aa
> bb<-matrix(c(100,100,1),nrow=1,ncol=3); bb
> dim(aa)
> dim(bb)
> aa*bb
>
> Results:
>
> > aa<-matrix(1:30,nrow=10,ncol=3); aa
>       [,1] [,2] [,3]
>  [1,]    1   11   21
>  [2,]    2   12   22
>  [3,]    3   13   23
>  [4,]    4   14   24
>  [5,]    5   15   25
>  [6,]    6   16   26
>  [7,]    7   17   27
>  [8,]    8   18   28
>  [9,]    9   19   29
> [10,]   10   20   30
> > bb<-matrix(c(100,100,1),nrow=1,ncol=3); bb
>      [,1] [,2] [,3]
> [1,]  100  100    1
> > dim(aa)
> [1] 10  3
> > dim(bb)
> [1] 1 3
> > aa*bb
> Error in aa * bb : non-conformable arrays
>
> >
>

​Assuming that this is exactly what you want to do, then

aa[,1:2]<-aa[,1:2]*100;

transcript:

> aa<-matrix(1:30,nrow=10,ncol=3); > aa      [,1] [,2] [,3]
 [1,]    1   11   21
 [2,]    2   12   22
 [3,]    3   13   23
 [4,]    4   14   24
 [5,]    5   15   25
 [6,]    6   16   26
 [7,]    7   17   27
 [8,]    8   18   28
 [9,]    9   19   29
[10,]   10   20   30> aa[,1:2]<-aa[,1:2]*100> aa      [,1] [,2] [,3]
 [1,]  100 1100   21
 [2,]  200 1200   22
 [3,]  300 1300   23
 [4,]  400 1400   24
 [5,]  500 1500   25
 [6,]  600 1600   26
 [7,]  700 1700   27
 [8,]  800 1800   28
 [9,]  900 1900   29
[10,] 1000 2000   30

>
​


-- 
​
While a transcendent vocabulary is laudable, one must be eternally careful
so that the calculated objective of communication does not become ensconced
in obscurity.  In other words, eschew obfuscation.

111,111,111 x 111,111,111 = 12,345,678,987,654,321

Maranatha! <><
John McKown

	[[alternative HTML version deleted]]



More information about the R-help mailing list