Умножьте каждый элемент вектора отдельно, чтобы создать матрицу

Я пытаюсь умножить каждый элемент в векторе так, чтобы он создавал матрицу, симметричную относительно диагонали. Например, учитывая этот вектор::

x <- 1:3

Я хотел бы создать это:

1 2 3  
2 4 6 
3 6 9  

то есть:

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] 

Любая помощь будет принята с благодарностью. Благодарю.

1 ответ

Решение

Как это:

x %o% x

который является ярлыком для

outer(x, x)

Вы также можете сделать

 tcrossprod(x)
Другие вопросы по тегам