R中整数n的k-排列

时间:2018-06-19 08:49:10

标签: r permutation

功能

permutations(n)
来自包e1071

返回一个矩阵,其中包含整数1:n的所有排列(每行一个排列)。例如:

> permutations(3)
      [,1] [,2] [,3]
[1,]    1    2    3
[2,]    2    1    3
[3,]    2    3    1
[4,]    1    3    2
[5,]    3    1    2
[6,]    3    2    1

术语置换的较弱含义表示那些有序排列,其中没有元素出现不止一次,但不要求使用给定集合中的所有元素。我特别考虑了从给定的大小为n的集合中得到的固定长度为k的元素的排列,换句话说:n的k-排列。

如何获得包含整数1:n(每行一个排列)的所有k-排列的矩阵?

2 个答案:

答案 0 :(得分:3)

来自permutations的函数gtools比来自e1071的函数更精细,因为它有其他参数以及r,v等。

对于您的情况,您可以使用

library(gtools)
gtools::permutations(n,k)

编辑:此函数permutations来自gtools包,正如@jaySf指出

添加gtools::permutations(3,2)

的示例
permutations(3,2)

         [,1] [,2]
    [1,]    1    2
    [2,]    1    3
    [3,]    2    1
    [4,]    2    3
    [5,]    3    1
    [6,]    3    2

答案 1 :(得分:2)

我推荐arrangements套餐。在some benchmarks之后,我们得出结论非常好。

> library(arrangements)
> permutations(3,2)
     [,1] [,2]
[1,]    1    2
[2,]    1    3
[3,]    2    1
[4,]    2    3
[5,]    3    1
[6,]    3    2