5

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!

user2249626
  • 453
  • 2
  • 6
  • 15

2 Answers2

9

combn() is nice for this sort of thing:

a <- 1:4

combn(a, m = 2, FUN = prod) 
# [1]  2  3  4  6  8 12
Josh O'Brien
  • 159,210
  • 26
  • 366
  • 455
3

lower.tri selects them in that order:

out <- outer(1:4,1:4)
out[lower.tri(out)]
# [1]  2  3  4  6  8 12
Frank
  • 66,179
  • 8
  • 96
  • 180