这是我的代码:
a <-c(1,2,3)
b <-t(a)
print(a*b)
我希望结果为 14,因为列向量乘以具有合适尺寸的行向量应该是 skalar。
但是,我得到:
打印 (a*t(a))
[,1] [,2] [,3]
[1,] 1 4 9
因此,部分和而不是全部和。我怎样才能解决这个问题?
两个问题,错误的乘法顺序和错误的乘法函数。
> 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 列的矩阵。
见?"%*%"
和?"*"
如果您本质上想要的是产品的总和,那么您所需要的就是sum(a*a)
你可以简单地做到这一点,
> a <-c(1,2,3)
> b <-t(a)
> b %*% a
在这里,%*%
作为矩阵产品。
只需这样做
a <-c(1,2,3)
> b<-t(a)
> b
> t(b)
然后
总和(a*t(b)) [1] 14