Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

R pairwise product

I'm trying to get the pairwise products of a vector, say

a = c(1,2,3,4)

What I'm trying to get is

2,3,4,6,8,12 (in that order).

I've tried using outer:

outer(1:4,2:4)

and that gives me a matrix that includes the products I want but I'm not sure how to extract them from the matrix in a way that scales to vectors of higher dimensions.

Thanks!

like image 698
user2249626 Avatar asked Sep 19 '13 15:09

user2249626


2 Answers

combn() is nice for this sort of thing:

a <- 1:4

combn(a, m = 2, FUN = prod) 
# [1]  2  3  4  6  8 12
like image 103
Josh O'Brien Avatar answered Nov 17 '22 23:11

Josh O'Brien


lower.tri selects them in that order:

out <- outer(1:4,1:4)
out[lower.tri(out)]
# [1]  2  3  4  6  8 12
like image 3
Frank Avatar answered Nov 17 '22 22:11

Frank