Rのグループ内のグループの長さと要素のすべての可能な組み合わせでリストをn個のグループに分割するにはどうすればよいですか?

GN_Agostino

私の目標は、リストをすべての可能な組み合わせでn個のグループに分割することです(グループの長さは可変です)。

ここで同じ質問に答えました(Python環境)が、R環境で複製できません。

誰かが親切に私を助けてくれますか?どうもありがとう。

ThomasIsCoding

同様の目的で簡単に実装したい場合はlistParts、パッケージから試すことができますpartitions

> x <- 4

> partitions::listParts(x)
[[1]]
[1] (1,2,3,4)

[[2]]
[1] (1,2,4)(3)

[[3]]
[1] (1,2,3)(4)

[[4]]
[1] (1,3,4)(2)

[[5]]
[1] (2,3,4)(1)

[[6]]
[1] (1,4)(2,3)

[[7]]
[1] (1,2)(3,4)

[[8]]
[1] (1,3)(2,4)

[[9]]
[1] (1,4)(2)(3)

[[10]]
[1] (1,2)(3)(4)

[[11]]
[1] (1,3)(2)(4)

[[12]]
[1] (2,4)(1)(3)

[[13]]
[1] (2,3)(1)(4)

[[14]]
[1] (3,4)(1)(2)

[[15]]
[1] (1)(2)(3)(4)

ここxで、はセット内の要素の数であり、すべてのパーティションは要素のインデックスを示します。


パーティションの数を選択したい場合は、以下が役立つ可能性のあるユーザー関数です

f <- function(x, n) {
  res <- listParts(x)
  subset(res, lengths(res) == n)
}

そのような

> f(x, 2)
[[1]]
[1] (1,2,4)(3)

[[2]]
[1] (1,2,3)(4)

[[3]]
[1] (1,3,4)(2)

[[4]]
[1] (2,3,4)(1)

[[5]]
[1] (1,4)(2,3)

[[6]]
[1] (1,2)(3,4)

[[7]]
[1] (1,3)(2,4)


> f(x, 3)
[[1]]
[1] (1,4)(2)(3)

[[2]]
[1] (1,2)(3)(4)

[[3]]
[1] (1,3)(2)(4)

[[4]]
[1] (2,4)(1)(3)

[[5]]
[1] (2,3)(1)(4)

[[6]]
[1] (3,4)(1)(2)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ