Rにおける複数のベクトルの組み合わせ

私は順列が正しいのかどうかは分かりません。 n個のベクトルのセットを与えたいとします(つまり、 [1,2][3,4][2,3] )それらをすべて並べ替え、

[1,3,2],[1,3,3],[1,4,2],[1,4,3],[2,3,2] etc.

Rにこれを行う操作がありますか?

5
私はあなたが組み合わせを記述していると信じている。順列は組み合わせに似ていますが、要素の順序は重要です。
追加された 著者 Andrie,

2 答え

これは、ベクトルをリストに格納し、適切な関数呼び出しを手配するために do.call()を使用する場合に便利です。 expand.grid()は標準的な関数です。しかし、個々のベクトルを入力したり名前を付けたりする必要はありませんので、試してみてください:

> l <- list(a = 1:2, b = 3:4, c = 2:3)
> do.call(expand.grid, l)
  a b c
1 1 3 2
2 2 3 2
3 1 4 2
4 2 4 2
5 1 3 3
6 2 3 3
7 1 4 3
8 2 4 3

しかし、私の巧みさのために、 expand.grid()はリストを受け入れることが分かりました。

> expand.grid(l)
  a b c
1 1 3 2
2 2 3 2
3 1 4 2
4 2 4 2
5 1 3 3
6 2 3 3
7 1 4 3
8 2 4 3
9
追加された
+1爆発と犯罪。あなたは私の答えを盗んだ。 ;-)
追加された 著者 Andrie,
@アントリーどのように恥ずかしい! あまりにも賢いをしようとすると、それが現れるという利点があります。私はここで受け入れに値しません。私はいくつかのアップボンスで償います。
追加された 著者 Gavin Simpson,

これが expand.grid の役割です。

ヘルプページから引用する:提供されたベクトルまたは要素のすべての組み合わせからデータフレームを作成する。結果は、各組み合わせの行を持つ data.frame です。

expand.grid(
    c(1, 2),
    c(3, 4),
    c(2, 3)
)

  Var1 Var2 Var3
1    1    3    2
2    2    3    2
3    1    4    2
4    2    4    2
5    1    3    3
6    2    3    3
7    1    4    3
8    2    4    3
7
追加された
+1爆発と犯罪、あなたはそれに私を打つ;-)
追加された 著者 Gavin Simpson,
@ user1375871あなたのベクトルの大きさはどれくらいですか?
追加された 著者 sebastian-c,
こんにちは、私はこのアプローチを試みているが、メッセージを取得しています: "Rep.int(rep.int(seq_len(nx)、rep.int(rep.fac、nx))、orep)のエラー:ベクトルが大きすぎます"これを行う別の方法がありますか?
追加された 著者 user1375871,