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

use*_*770 12 r vector

这是我的代码:

a <-c(1,2,3)
b <-t(a)
print(a*b)
Run Code Online (Sandbox Code Playgroud)

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

但是,我得到:

打印(a*t(a))

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

[1,]    1    4    9
Run Code Online (Sandbox Code Playgroud)

因此,部分总和而不是全部总和.我怎样才能解决这个问题?

Mat*_*erg 20

两个问题,错误顺序的乘法和错误的乘法函数.

> print(t(a)%*%a)
     [,1]
[1,]   14
Run Code Online (Sandbox Code Playgroud)

等价的:

> a=matrix(c(1,2,3),ncol=3)
> print (a %*% t(a))
     [,1]
[1,]   14
Run Code Online (Sandbox Code Playgroud)

a是一行1列,3列.

?"%*%"?"*"

  • 我们还要提一下,如果您正在进行会话,则不需要使用`print`,这可能就是这种情况. (2认同)
  • 以及`crossprod`和`tcrossprod`函数. (2认同)

A_K*_*A_K 17

如果你真正想要的是产品的总和,那么你所需要的只是 sum(a*a)