[R] Matrix element-by-element multiplication

Steven Yen syen04 at gmail.com
Thu Jan 8 00:30:28 CET 2015


Thank you both. Both John and Peter's suggestions work great!!

At 06:17 PM 1/7/2015, John McKown wrote:
>On Wed, Jan 7, 2015 at 5:05 PM, Steven Yen 
><<mailto:syen04 at gmail.com>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