Так много вариантов для перестановок ... вот один, использующий пакет Rfast
:
library(Rfast)
#> Loading required package: Rcpp
#> Loading required package: RcppZiggurat
A = c(30709,28587,21672,20873,19877)
B = c(20213,21865,26217,30558,31674)
pa <- permutation(A)
pA <- sapply(seq_len(dim(pa)[1]), function(x) pa[x,] - B)
pa[colSums(sign(pA)) == max(colSums(sign(pA))), ]
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 20873 19877 28587 30709 21672
#> [2,] 20873 21672 28587 30709 19877
#> [3,] 20873 28587 19877 30709 21672
#> [4,] 20873 28587 21672 30709 19877
#> [5,] 20873 28587 30709 19877 21672
#> [6,] 20873 28587 30709 21672 19877
#> [7,] 20873 30709 28587 19877 21672
#> [8,] 20873 30709 28587 21672 19877
#> [9,] 21672 19877 28587 30709 20873
#> [10,] 21672 20873 28587 30709 19877
#> [11,] 21672 28587 19877 30709 20873
#> [12,] 21672 28587 20873 30709 19877
#> [13,] 21672 28587 30709 19877 20873
#> [14,] 21672 28587 30709 20873 19877
#> [15,] 21672 30709 28587 19877 20873
#> [16,] 21672 30709 28587 20873 19877
Редактировать: базовая версия R:
A = c(30709,28587,21672,20873,19877)
B = c(20213,21865,26217,30558,31674)
permutation <- function(x) {
if (length(x) == 1) {
return(x)
}
else {
res <- matrix(nrow = 0, ncol = length(x))
for (i in seq_along(x)) {
res <- rbind(res, cbind(x[i], Recall(x[-i])))
}
return(res)
}
}
pa <- permutation(A)
pA <- sapply(seq_len(dim(pa)[1]), function(x) pa[x,] - B)
pa[colSums(sign(pA)) == max(colSums(sign(pA))), ]
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 21672 30709 28587 20873 19877
#> [2,] 21672 30709 28587 19877 20873
#> [3,] 21672 28587 30709 20873 19877
#> [4,] 21672 28587 30709 19877 20873
#> [5,] 21672 28587 20873 30709 19877
#> [6,] 21672 28587 19877 30709 20873
#> [7,] 21672 20873 28587 30709 19877
#> [8,] 21672 19877 28587 30709 20873
#> [9,] 20873 30709 28587 21672 19877
#> [10,] 20873 30709 28587 19877 21672
#> [11,] 20873 28587 30709 21672 19877
#> [12,] 20873 28587 30709 19877 21672
#> [13,] 20873 28587 21672 30709 19877
#> [14,] 20873 28587 19877 30709 21672
#> [15,] 20873 21672 28587 30709 19877
#> [16,] 20873 19877 28587 30709 21672
Создано в 2020-04-04 пакетом Представ (v0.3.0)
Ссылка: Генерация всех различных перестановок списка в R