[R] multiplying a matrix by a vector

Dimitri Liakhovitski dimitri.liakhovitski at gmail.com
Fri Nov 4 16:15:56 CET 2016


Nice!
Thanks a lot, everybody!
Dimitri

On Fri, Nov 4, 2016 at 10:35 AM, Bert Gunter <bgunter.4567 at gmail.com> wrote:
> 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
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.



-- 
Dimitri Liakhovitski



More information about the R-help mailing list