假设我们有以下内容:
x <- matrix(1:9, nrow=3)
y <- c(1,2,3)
x%*%y
y%*%x
Run Code Online (Sandbox Code Playgroud)
为什么矩阵乘法不是未定义的?我们知道这x是一个3 x 3矩阵,y是1 x 3矩阵.所以x %*% y不应该定义,y %*% x应该是1 x 3矩阵.
幸运的是(或不幸,视情况而定)许多[R运营商(在默认状态)的过载和做各种"引擎盖下"的东西-在这个例子中,默认的功能%*%在R自动强制转换y到矩阵,其尺寸将工作.当你输入
x %*% y
Run Code Online (Sandbox Code Playgroud)
y当你输入时,它会产生一个3 x 1的矩阵
y %*% x
Run Code Online (Sandbox Code Playgroud)
它制作y1 x 3矩阵.
尝试将它们与您键入时进行比较
x %*% as.matrix(y)
Run Code Online (Sandbox Code Playgroud)
和
t(as.matrix(y)) %*% x
Run Code Online (Sandbox Code Playgroud)
分别
| 归档时间: |
|
| 查看次数: |
3421 次 |
| 最近记录: |