Наружный в R, но только получить верхнюю матрицу? - PullRequest
1 голос
/ 05 октября 2019

Если вы наберете outer(x, x, f), вы получите матрицу с элементами f(x(i), x(j)) для каждого элемента в векторе x.

Как мне сделать то же самое, но где я хочу только верхнийТреугольная матрица часть этой же матрицы?

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

По сути, мне нужна верхняя треугольная матрица, в которой элемент i, j для j >= i равен f(x(i), x(j)), и я хочу, чтобы это было как можно быстрее.

1 Ответ

0 голосов
/ 05 октября 2019

Мы можем использовать upper.tri из base R для создания логической матрицы и подмножества элементов

out <- outer(x, x, f)
out[upper.tri(out)]

Вместо использования outer это можно сделать с помощью combn

combn(x, 2, FUN = f)

Кроме того, для быстрого выбора

arrangements::combinations(x, k = 2)

может вернуть комбинации и затем применить 'f' к этим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...