这是我的代码:
a <-c(1,2,3)
b <-t(a)
print(a*b)
我希望结果为14,因为列向量乘以具有拟合维度的行向量应该是标量。
但是,我得到了:
打印(a * t(a))
[,1] [,2] [,3]
[1,] 1 4 9
因此,部分总和而不是全部总和。我该如何解决这个问题?
答案 0 :(得分:20)
两个问题,错误顺序的乘法和错误的乘法函数。
> print(t(a)%*%a)
[,1]
[1,] 14
等效地:
> a=matrix(c(1,2,3),ncol=3)
> print (a %*% t(a))
[,1]
[1,] 14
此处a
是1行,3列的矩阵。
请参阅?"%*%"
和?"*"
答案 1 :(得分:17)
如果您基本上想要的是产品的总和,那么您所需要的只是sum(a*a)
答案 2 :(得分:0)
只需这样做
a <-c(1,2,3)
> b<-t(a)
> b
> t(b)
然后
和(A * T(b))的 [1] 14
答案 3 :(得分:0)
您可以简单地做到这一点,
> a <-c(1,2,3)
> b <-t(a)
> b %*% a
在这里,%*%
充当矩阵乘积。