1

1:6 の整数のベクトルがあるとしましょう

w=1:6

サイズ 2 の 3 つのグループとして取得されたこれらの 6 つの整数から多項式の組み合わせを含む 90 行 6 列の行列を取得しようとしています。

6!/(2!*2!*2!)=90

したがって、行列の列 1 と 2 はグループ 1 を表し、列 3 と 4 はグループ 2 を表し、列 5 と 6 はグループ 3 を表します。

1 2 3 4 5 6

1 2 3 5 4 6

1 2 3 6 4 5

1 2 4 5 3 6

1 2 4 6 3 5

...

最終的には、これを限られたサイズの他の多項式の組み合わせに拡張したいと思います (数値がすぐに大きくなるため) が、うまく動作しません。二項の組み合わせ (2 つのグループのみ) を行う関数をいくつか見つけましたが、グループの数が 2 を超える場合にこれを行う関数を見つけることができませんでした。

私はこれに対して2つのアプローチを試みました:

  1. for ループを使用して何もない状態から行列を構築し、 reshape パッケージを使用して試行します (これには、melt() を使用する何かがあるかもしれないと考えています)。

  2. グループ内の一意の行を保持するか、グループ内の重複行を削除することにより、順列行列 (720 行) から逆方向に作業する

どちらも私にとってはうまくいきませんでした。

順列行列は、次のように取得できます。

library(gtools)
dat=permutations(6, 6, set=TRUE, repeats.allowed=FALSE)

完全な順列行列から逆方向に作業するのは少し過剰だと思いますが、この時点で何でも試しています。

このためのビルド済み機能を備えたパッケージはありますか? 誰も私がどのように進めるべきか考えていますか?

4

1 に答える 1