操作符 %*% 用于矩阵相乘。
n × 1 或者 1 × n 矩阵在情况允许的时候
可以作为一个长度为 n 的向量处理。
反之,向量在矩阵相乘表达式中出现时可能
会被自动转换成与矩阵对应
的行或者列向量(有时候,会比较含糊
,后面会有所论述)。
如果 A 和 B 大小一样的方阵,
那么
> A * B
将是一个对应元素乘积的矩阵,并且
> A %*% B
同样是一个矩阵积。如果 x 是一个向量,那么
> x %*% A %*% x
一个二次型(quadratic form)1。
函数 crossprod() 可以完成“矢积”(crossproduct)运算,也就是说
crossprod(X, y) 和 t(X) %*% y 等价,但是
在运算上更为高效。如果
crossprod() 第二个参数忽略了,它将默认和第一个参数一样。
函数 diag() 的含义依赖于它的参数。当 v 是一个向量时,
diag(v)返回以该向量元素为对角元素的
对角矩阵。当 M 是一个矩阵时,diag(M)
返回M的对角元素。
这和 Matlab 中 diag() 的用法完全一致。
不过有点混乱的是,如果 k 是单个值
2,
那么 diag(k) 的结果就是 k × k 的方阵!