r - 使用 R 进行分区和排列

标签 r combinations permutation combinatorics partition

我正在尝试使用 R 找到 M 的所有可能分区(包括 0)到 N 个部分。然后,我想排列每个结果而不进行替换和重复。

例如,对于 M=4 和 N=2,我想得到:

[1,] 4 3 2 0 1
[2,] 0 1 2 4 3 

现在,我可以获得:

[1,] 4 3 2
[2,] 0 1 2

使用partitions::restrictedparts(4, 2, include.zero=TRUE)。我该如何继续?

为了提供这个问题的一些背景知识,我实际上试图找出掷骰子 60 次后每一面出现的次数的所有可能结果。

最佳答案

您当前正在使用的软件包(即partitions)中有一个可用的函数,它可以完成您正在寻找的任务。它被恰本地称为组合(有关更多信息,请参阅 Composition (combinatorics))。

partitions::compositions(4, 2)

[1,] 4 3 2 1 0
[2,] 0 1 2 3 4

现在,为了解决您的实际问题,我们有:

myParts <- partitions::compositions(60, 6)  ## Note that include.zero is TRUE by default

dim(myParts)
[1]       6 8259888

这是输出:

transMat <- t(as.matrix(myParts))
head(transMat)
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]   60    0    0    0    0    0
[2,]   59    1    0    0    0    0
[3,]   58    2    0    0    0    0
[4,]   57    3    0    0    0    0
[5,]   56    4    0    0    0    0
[6,]   55    5    0    0    0    0

tail(transMat)
           [,1] [,2] [,3] [,4] [,5] [,6]
[8259883,]    1    0    0    0    0   59
[8259884,]    0    1    0    0    0   59
[8259885,]    0    0    1    0    0   59
[8259886,]    0    0    0    1    0   59
[8259887,]    0    0    0    0    1   59
[8259888,]    0    0    0    0    0   60

关于r - 使用 R 进行分区和排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60364006/

相关文章:

r - 如何通过fitdistrplus包选择分布参数?

java - 排列生成器 php/javaScript

java - 如何进行这种组合?

python - 如何在 Python 中避免关于排列的内存错误

algorithm - Lights out puzzle : what is this pro. blem调用,如何解决呢? (网格)

r - data.table 避免回收

knitr中python block 的根目录?

arrays - 在 Ruby 中对组合进行排序

python - 如何获取字符串所有子串的每一个排列?

java - 如何在 netcdf 文件中减去连续的每日数据及其后继日期?