假设我们有以下内容:
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矩阵。
最佳答案
幸运的是(或不幸的是,根据情况而定)许多R运算符(处于默认状态)被重载并在“幕后”执行各种操作-在此示例中,%*%
中R
的默认功能自动将y
强制转换为矩阵,尺寸将起作用。当您键入
x %*% y
它使
y
为3 x 1矩阵,当您键入y %*% x
它使
y
成为1 x 3矩阵。尝试将它们与您键入时的内容进行比较
x %*% as.matrix(y)
和
t(as.matrix(y)) %*% x
分别
关于r - 矩阵乘法-不合格矩阵的宽松定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14158985/