[R] Matrix element-by-element multiplication

Peter Langfelder peter.langfelder at gmail.com
Thu Jan 8 00:15:06 CET 2015


You can create a suitable matrix bb as below (note the byrow = TRUE argument)

aa<-matrix(1:30,nrow=10,ncol=3); aa
bb<-matrix(c(100,100,1),nrow=10,ncol=3, byrow = TRUE); bb
dim(aa)
dim(bb)
aa * bb


You can also use matrix multiplication, but that;s slightly more involved:

aa<-matrix(1:30,nrow=10,ncol=3); aa
bb<-matrix(0,nrow=3,ncol=3);
diag(bb) = c(100,100,1);
bb
dim(aa)
dim(bb)
aa %*% bb


HTH,

Peter



On Wed, Jan 7, 2015 at 3: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
>
>>
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.



More information about the R-help mailing list