将矢量中的每个元素自身相乘以创建矩阵

cod*_*art 6 r matrix multiplication

我试图将矢量中的每个元素相乘,以便产生一个关于对角线对称的矩阵.例如,给定此向量::

x <- 1:3
Run Code Online (Sandbox Code Playgroud)

我想创建这个:

1 2 3  
2 4 6 
3 6 9  
Run Code Online (Sandbox Code Playgroud)

即:

x[1]*x[1] x[2]*x[1] x[3]*x[1]  
x[1]*x[2] x[2]*x[2] x[3]*x[2] 
x[1]*x[3] x[2]*x[3] x[3]*x[3] 
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.谢谢.

flo*_*del 10

像这样:

x %o% x
Run Code Online (Sandbox Code Playgroud)

这是一个快捷方式

outer(x, x)
Run Code Online (Sandbox Code Playgroud)

你也可以

 tcrossprod(x)
Run Code Online (Sandbox Code Playgroud)