# [R] Strange Matrix Multiplication Behaviour

Gavin Simpson gavin.simpson at ucl.ac.uk
Mon Oct 4 17:34:50 CEST 2004

```Wayne Jones wrote:
> Hi there fellow R-users,
>
> Im seeing some strange behaviour when I multiply a vector by a matrix
>
> Here is my script:
>

"*" does array or element-wise multiplication. %*% is Matrix multiplication.

In the first case, you are multiplying tr by the first row of ex1

> tr * ex1[1, ]
a          b           c          d          e          f
1 0.05122422 -0.5117032 -0.09961093 -0.1842568 0.03664727 -0.2285117

In the second, you are extracting the first row of the result of
multiplying tr by ex1, which as we see below returns a 2x6 matrix:

> tr * ex1
a          b           c           d           e           f
1  0.05122422 -0.4878917 -0.10648873 -0.24451059  0.03428033 -0.24698556
2 -0.04471461 -0.4211459 -0.01675805 -0.05573933 -0.44671804 -0.04852005
> (tr * ex1)[1, ]
a          b          c          d          e          f
1 0.05122422 -0.4878917 -0.1064887 -0.2445106 0.03428033 -0.2469856

Note that tr gets recycled in the tr * ex1 and (tr * ex1)[1, ] as tr is
not as long as ex1.

Element 1b in (tr * ex1)[1, ] is formed by multiplying element 1b of ex1
(-3.279045) by the third element of the vector tr (0.1487908):

> tr * ex1[1,2]
 -0.4878917

the second value of the vector tr was used to multiply against element
2a in matrix ex1:

but in the tr * ex1[1, ] case tr and ex1[1, ] both contain 6 elements
and the element 1b in the results is formed by multiplying element 1b of
ex1[1, ] (-3.279045) by the second element of vector tr (0.1560525)

> tr * ex1[1,2]
 -0.5117032

>
> Notice that the output from tr * ex[1,] is different from (tr* ex1)[1,]
> Especially element number 4.

The difference is due to recycling of tr and of where you are doing your
sub setting

> I would naturally expect both vectors to be equivalent.
>

Hopefully my longwinded explanation helps.

Gav
--
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
Gavin Simpson                     [T] +44 (0)20 7679 5522
ENSIS Research Fellow             [F] +44 (0)20 7679 7565
ENSIS Ltd. & ECRC                 [E] gavin.simpson at ucl.ac.uk
UCL Department of Geography       [W] http://www.ucl.ac.uk/~ucfagls/cv/
26 Bedford Way                    [W] http://www.ucl.ac.uk/~ucfagls/
London.  WC1H 0AP.
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%

```