Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
394 views
in Technique[技术] by (71.8m points)

r - Multiply each element in a vector by itself to create a matrix

I'm trying to multiply each element in a vector by itself such that it produces a matrix that is symmetric about the diagonal. For example, given this vector::

x <- 1:3

I would like to create this:

1 2 3  
2 4 6 
3 6 9  

i.e:

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] 

Any help would be greatly appreciated. Thanks.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Like this:

x %o% x

which is a shortcut for

outer(x, x)

You can also do

 tcrossprod(x)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...