変数の合計が100になるような 'n'変数のすべての可能な組み合わせを生成する必要があります。変数の範囲は0から100まであり、1のステップを変えることができます。 = 10の場合、結果のデータフレームにはすべての可能な組み合わせが含まれます。しかし、私は、ユーザーが開始時に引数としてnを渡す柔軟性を持つように、 'n'動的を作る可能性を探しています。 すべてのヘルプは高く評価されます。..ダイナミックネストされたfor-loopsを生成するためにRで再帰関数を書き込むにはどうすればよいですか?
row <- list()
z = 1
for (a in seq(from = 0, to = 100, by = 1)) {
for (b in seq(from = 0, to = 100, by = 1)) {
for (c in seq(from = 0, to = 100, by = 1)) {
for (d in seq(from = 0, to = 100, by = 1)) {
for (e in seq(from = 0, to = 100, by = 1)) {
for (f in seq(from = 0, to = 100, by = 1)) {
for (g in seq(from = 0, to = 100, by = 1)) {
for (h in seq(from = 0, to = 100, by = 1)) {
for (i in seq(from = 0, to = 100, by = 1)) {
for (j in seq(from = 0, to = 100, by = 1)) {
if (a + b + c + d + e + f + g + h + i + j == 100) {
row[[z]] <- (c(a,b,c,d,e,f,g,h,i,j))
z = z + 1
}
}
}
}
}
}
}
}
}
}
}
finaldata <- as.data.frame(do.call(rbind, row))
これは数論の問題です。それは、100という数のパーティション(ゼロが許されます)と呼ばれます。 9つのパーツを持つパーティションから10つのパーツでパーティションを再帰する必要があります(そして、8つのパーツから7つのパーツまで...)! – jogo
例:10番目の部分は0,1、...、100の値を持つことができます。したがって、0から100までの部分の100を9 + 100の区画と1+ "99 in 9 parts"の部分と... – jogo
あなたがこの問題を解決できたとしても、結果が気に入らないでしょう。 Rのforループのパフォーマンスはひどいです。この多くのネストされたループは、Rの闘争につながります。 – niczky12