hxd1011 hxd1011 - 3 months ago 8
R Question

Matrix and vector multiplication operation in R

I feel matrix operations in R is very confusing: we are mixing row and column vectors.


  • Here we define
    x1
    as a vector, (I assume R default vector is a column vector? but it does not show it is arranged in that way.)

  • Then we define
    x2
    is a transpose of
    x1
    , which the display also seems strange for me.

  • Finally, if we define
    x3
    as a matrix the display seems better.



Now, my question is that,
x1
and
x2
are completely different things (one is transpose of another), but we have the same results here.

Any explanations? may be I should not mix vector and matrix operations together?

x1 = c(1:3)
x2 = t(x1)
x3 = matrix(c(1:3), ncol = 1)

x1
[1] 1 2 3

x2
[,1] [,2] [,3]
[1,] 1 2 3

x3
[,1]
[1,] 1
[2,] 2
[3,] 3

x3 %*% x1
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 2 4 6
[3,] 3 6 9

x3 %*% x2
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 2 4 6
[3,] 3 6 9

Answer

See ?`%*%`:

Description:

 Multiplies two matrices, if they are conformable.  If one argument
 is a vector, it will be promoted to either a row or column matrix
 to make the two arguments conformable.  If both are vectors of the
 same length, it will return the inner product (as a matrix).
Comments