2

組み合わせから構築された2つのマトリックスがあります

mat1 <- combn(10, 2)
mat2 <- combn(20, 3)

mat1 は 2x45 であり、mat2 は 3x1140 です。

私が作成したいのは、両方のアクションを順番に実行すると仮定した場合の可能な組み合わせです。最初の 10 人は 2 を選択し、すぐに 20 人が 3 を選択します。すべての組み合わせは何ですか。5 行 51300 列の行列を作成したいと思います。最初の列の値は (1, 2, 1, 2, 3) になります。

これを実装する最も適切な方法は何ですか?

4

2 に答える 2

2

を使用した別の可能な解決策expand.grid

idx = expand.grid((1:ncol(mat1)),(1:ncol(mat2)))

rbind(mat1[,idx[,1]], mat2[,idx[,2]])

任意の数の行列への一般化:

mat.list <- list(mat1, mat2)
idx <- expand.grid(lapply(lapply(mat.list, ncol), seq_len))
do.call(rbind, mapply(function(x, j)x[, j], mat.list, idx))
于 2013-04-30T03:19:56.417 に答える