乘以两个向量 - 我想要一个标量,但我得到一个向量?

时间:2012-12-08 16:29:21

标签: r vector

这是我的代码:

a <-c(1,2,3)
b <-t(a)
print(a*b)

我希望结果为14,因为列向量乘以具有拟合维度的行向量应该是标量。

但是,我得到了:

  

打印(a * t(a))

 [,1] [,2] [,3]

[1,]    1    4    9
因此,部分总和而不是全部总和。我该如何解决这个问题?

4 个答案:

答案 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

在这里,%*%充当矩阵乘积。