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.