请注意下面的R节。
> z3 <- cbind(c(10,10,10,10));
> z3
[,1]
[1,] 10
[2,] 10
[3,] 10
[4,] 10
> m2
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
[4,] 10 11 12
> m2[,2]
[1] 2 5 8 11
> m3
[,1] [,2] [,3] [,4]
[1,] 10 10 10 8
[2,] 1 1 1 1
> m3 %*% m2[,2];
[,1]
[1,] 238
[2,] 26
> m3 %*% z3;
[,1]
[1,] 380
[2,] 40
>
在这里,m3是一个2x4矩阵,所以它可以被m2,2乘以,因为m2,2是一个4x1矩阵(所以它们与乘法兼容)。现在请注意,z3也是一个4x1矩阵(如m2)。
我想知道为什么他们的演示文稿(m2、2和z)是不同的(我指的是当我只键入z3和在R提示符下键入m2时看到的输出)。我觉得这个差别很奇怪。我喜欢Z3的演示,我不喜欢M2的演示。
发布于 2015-08-02 14:33:27
如果子集为1维,R只是将其转化为一个向量。(编辑:它只是简化了。即,“返回到最低可能的维度”)
如果你不想这样做,那就做m2[,2,drop=FALSE]
吧
顺便提一句,(1:4)%*%m2
和m2%*%(1:3)
一样有效。所以,即使它去掉了矩阵表示法,它也能完成你的数学运算,这是很好的。
https://stackoverflow.com/questions/31777223
复制相似问题