長さが異なるシーケンスがあります。たとえば、次のようなものです。
items <- 1:4
n
セット数の可能な組み合わせごとに分割したい。つまりn
、2つです。私は戻りたいです:
Set A Set B
----- -----
1 2 3 4
1 2 3 4
1 2 3 4
1 3 2 4
セット内の配置は重要ではありません。つまり、セット { 1
, 2
, } は { , , 3
} と同じです。セットを空にすることはできません。2
1
3
私が思いつくことができる最高のものは(permn
パッケージから使用してcombinat
)次のとおりです。
n <- 2
r <- 1:length(items)
arrangements <- NULL
for (i in 1:(n-1)) {
A <- r[(1:i)]
B <- r[-(1:i)]
arrangements <- c(arrangements, apply(do.call(rbind, permn(1:length(items))), 1, function(z) list(z[A], z[B])))
}
等しいセット、つまり { 1
, 2
, 3
} と { 2
, 1
, 3
} を返し、 の異なる値を処理するのに十分な柔軟性がないため、これはかなり役に立ちませんn
。どうすればこれを行うことができるか、誰にもアイデアがありますか? ありがとう。