假设我们有以下内容:
x <- matrix(1:9, nrow=3)
y <- c(1,2,3)
x%*%y
y%*%x
为什么矩阵乘法不是未定义的?我们知道x
是3 x 3矩阵,y
是1 x 3矩阵。因此,不应定义x %*% y
,y %*% x
应为1 x 3矩阵。
答案 0 :(得分:7)
幸运的是(或者不幸的是,取决于具体情况)许多R运算符(处于默认状态)都会超负荷并在“引擎盖”下执行各种操作 - 在此示例中,%*%
的默认功能R
会自动将y
强制转换为其维度有效的矩阵。当您键入
x %*% y
它使y
为3 x 1矩阵,当您键入
y %*% x
它使y
为1 x 3矩阵。
尝试与您键入的内容进行比较
x %*% as.matrix(y)
和
t(as.matrix(y)) %*% x
分别