# [R] multiplying a matrix by a vector

Bert Gunter bgunter.4567 at gmail.com
Fri Nov 4 15:35:29 CET 2016

```My goodness!

> x %*% diag(y)

[,1] [,2]
[1,]    2   12
[2,]    4   15
[3,]    6   18

will do.

-- Bert

Bert Gunter

"The trouble with having an open mind is that people keep coming along
and sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )

On Thu, Nov 3, 2016 at 2:33 PM, Sarah Goslee <sarah.goslee at gmail.com> wrote:
> Like this?
>
>> sweep(x, 2, y, "*")
>      [,1] [,2]
> [1,]    2   12
> [2,]    4   15
> [3,]    6   18
>>
>
>
> On Thu, Nov 3, 2016 at 5:05 PM, Dimitri Liakhovitski
> <dimitri.liakhovitski at gmail.com> wrote:
>> Hello!
>>
>> I have a matrix x and a vector y:
>>
>> x <- matrix(1:6, ncol = 2)
>> y <- c(2,3)
>>
>> I need to multiply the first column of x by 2 (y[1]) and the second
>> column of x by 3 (y[2]).
>>
>> Of course, I could do this - but it's column by column:
>>
>> x[,1] <- x[,1] * y[1]
>> x[,2] <- x[,2] * y[2]
>> x
>>
>> Or I could repeat each element of y and multiply two matrices - that's better:
>>
>> rep.row<-function(x,n){
>>   matrix(rep(x,each=n),nrow=n)
>> }
>> y <- rep.row(y, nrow(x))
>> x * y
>>
>> However, maybe there is a more elegant r-like way of doing it?
>> Thank you!
>>
>> --
>> Dimitri Liakhovitski
>>
>
> --
> Sarah Goslee
> http://www.functionaldiversity.org
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help