Умножьте каждый элемент вектора отдельно, чтобы создать матрицу
Я пытаюсь умножить каждый элемент в векторе так, чтобы он создавал матрицу, симметричную относительно диагонали. Например, учитывая этот вектор::
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)