Вот один из способов. Для каждой строки вашей матрицы из 100 строк вы найдете все пары / тройки чисел (используя combn
) и выполните подсчет частоты (используя table
) пар / тройок. Определенная мной функция pasteSort
создает строку из вектора после ее сортировки. Мы применяем эту функцию к каждой паре / кортежу в каждой строке и собираем все пары / кортежи из матрицы перед выполнением подсчета частоты. Обратите внимание, что если пара повторяется в той же строке , она считается "повторением".
> mtx <- matrix( c(1,5,10,15,3,
2, 15, 3, 8, 27,
1, 22, 34, 45, 35,
28, 27, 32, 3, 8), ncol=5, byrow=TRUE)
> pasteSort <- function( x ) do.call(paste, as.list( sort( x) ) )
> pairs <- c( apply(mtx, 1, function(row) apply( combn(row, 2), 2, pasteSort)) )
> pairFreqs <- table(pairs)
> pairFreqs[ pairFreqs > 1 ]
3 15 3 27 3 8 8 27
2 2 2 2
> triples <- c( apply(mtx, 1, function(row) apply( combn(row, 3), 2, pasteSort)) )
> tripleFreqs <- table( triples )
> tripleFreqs[ tripleFreqs > 1 ]
3 8 27
2