13

这是我的代码:

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

我希望结果为 14,因为列向量乘以具有合适尺寸的行向量应该是 skalar。

但是,我得到:

打印 (a*t(a))

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

[1,]    1    4    9

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

4

4 回答 4

21

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

> 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 列的矩阵。

?"%*%"?"*"

于 2012-12-08T16:34:34.707 回答
19

如果您本质上想要的是产品的总和,那么您所需要的就是sum(a*a)

于 2012-12-08T17:41:13.527 回答
1

你可以简单地做到这一点,

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

> b %*% a

在这里,%*%作为矩阵产品。

于 2019-08-14T22:12:19.347 回答
0

只需这样做

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

> t(b)

然后

总和(a*t(b)) [1] 14

于 2014-07-25T14:36:18.940 回答