matmult {base} | R Documentation |

## Matrix Multiplication

### 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).

### Usage

```
x %*% y
```

### Arguments

`x` , `y` |
numeric or complex matrices or vectors. |

### Details

When a vector is promoted to a matrix, its names are not
promoted to row or column names, unlike `as.matrix`

.

Promotion of a vector to a 1-row or 1-column matrix happens when one
of the two choices allows `x`

and `y`

to get conformable
dimensions.

This operator is a generic function: methods can be written for it
individually or via the `matOps`

group
generic function; it dispatches to S3 and S4 methods. Methods need to be
written for a function that takes two arguments named `x`

and `y`

.

### Value

A double or complex matrix product. Use `drop`

to remove
dimensions which have only one level.

### Note

The propagation of NaN/Inf values, precision, and performance of matrix
products can be controlled by `options("matprod")`

.

### References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
*The New S Language*.
Wadsworth & Brooks/Cole.

### See Also

For matrix *cross* products, `crossprod()`

and
`tcrossprod()`

are typically preferable.
`matrix`

, `Arithmetic`

, `diag`

.

### Examples

```
x <- 1:4
(z <- x %*% x) # scalar ("inner") product (1 x 1 matrix)
drop(z) # as scalar
y <- diag(x)
z <- matrix(1:12, ncol = 3, nrow = 4)
y %*% z
y %*% x
x %*% z
```

*base*version 4.4.0 Index]