(R)順列と組み合わせパターン

順列の数や組み合わせの数はすぐに計算出来ますが、必要なのが数ではなく順列パターンや組み合わせパターンそのものの場合にはどうすればよいのか考えてみます。

今回使う関数はデフォルト設定では使うことが出来ないので、[パッケージ]-[パッケージのインストール]でgtoolsというパッケージをインストールしてください。
次にパッケージをインポートします。

> library(gtools)

これで準備は完了です。
パターン生成にはこのパッケージのpermutations関数、combinations関数を用います。

使用例

  • 順列 (nPr通り)
> permutations(n=3,r=2,v=c(3,5,7))
     [,1] [,2]
[1,]    3    5
[2,]    3    7
[3,]    5    3
[4,]    5    7
[5,]    7    3
[6,]    7    5
  • 組み合わせ (nCr通り)
> combinations(n=3,r=2,v=c(3,5,7))
     [,1] [,2]
[1,]    3    5
[2,]    3    7
[3,]    5    7
  • 注意点

どちらもn>length(v)の時はエラーになります。
n

> combinations(n=3,r=2,v=c(3,5,7,9))  # 9が使われていない!
     [,1] [,2]
[1,]    3    5
[2,]    3    7
[3,]    5    7

なので極力n=length(v)となっているかチェックしたほうが良いかと思います。