2013-09-19 4 views
5

Я пытаюсь получить попарные произведения вектора, скажемR попарно продукт

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

То, что я пытаюсь получить это

2,3,4,6,8,12 (в этой последовательности).

Я попытался с помощью Наружно:

outer(1:4,2:4) 

, и это дает мне матрицу, которая включает в себя продукты, которые я хочу, но я не уверен, как извлечь их из матрицы таким образом, чтобы масштабируется к векторам более высоких размеров.

Спасибо!

ответ

9

combn() хорош для такого рода вещи:

a <- 1:4 

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

или 'combn (1: 4, 2, прод)' – GSee

+0

+1 для не вычисляя ненужные продукты (как 'external' делает). – Frank

+0

@GSee - Да, спасибо, это еще лучше. –

3

lower.tri выбирает их в таком порядке:

out <- outer(1:4,1:4) 
out[lower.tri(out)] 
# [1] 2 3 4 6 8 12 
Смежные вопросы