user2249626
user2249626

Reputation: 453

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!

Upvotes: 5

Views: 1705

Answers (2)

Josh O'Brien
Josh O'Brien

Reputation: 162331

combn() is nice for this sort of thing:

a <- 1:4

combn(a, m = 2, FUN = prod) 
# [1]  2  3  4  6  8 12

Upvotes: 9

Frank
Frank

Reputation: 66819

lower.tri selects them in that order:

out <- outer(1:4,1:4)
out[lower.tri(out)]
# [1]  2  3  4  6  8 12

Upvotes: 3

Related Questions