Multiply the rows or columns of a matrix by the elements of a vector.

matvec(M, v)
vecmat(v, M)

Arguments

M

numeric matrix, or object which can be coerced to a matrix.

v

numeric vector, or object which can be coerced to a vector. Length should match the number of columns of M (for matvec) or the number of rows of M (for vecmat)

Value

A matrix of the same dimensions as M.

Details

matvec(M,v) is equivalent to M %*% diag(v) but is faster to execute. Similarly vecmat(v,M) is equivalent to diag(v) %*% M but is faster to execute.

Author

Gordon Smyth

Examples

A <- matrix(1:12,3,4)
A
#>      [,1] [,2] [,3] [,4]
#> [1,]    1    4    7   10
#> [2,]    2    5    8   11
#> [3,]    3    6    9   12
matvec(A,c(1,2,3,4))
#>      [,1] [,2] [,3] [,4]
#> [1,]    1    8   21   40
#> [2,]    2   10   24   44
#> [3,]    3   12   27   48
vecmat(c(1,2,3),A)
#>      [,1] [,2] [,3] [,4]
#> [1,]    1    4    7   10
#> [2,]    4   10   16   22
#> [3,]    9   18   27   36