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.liakhovit...@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@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.

Reply via email to