r - 使用 R 进行分区和排列
问题描述
我正在尝试使用 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
),它可以满足您的需求。它被恰当地称为compositions
(有关更多信息,请参见组合(组合学))。
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
推荐阅读
- javascript - 为我的服务器设置数据库时要走哪条路
- twilio - Twilio 简单聚集动作
- java - java中从oracle到String的数字导致问题
- c# - 在 Simple Injector 中将生活方式与自动布线相结合是否可以?
- react-native - React Native 聊天应用,Flatlist useRef 为空
- java - 在我的 Spring 应用程序上启用 Keycloak 时没有被重定向到 Keycloak
- sql - 试图避免在 Oracle 查询中使用表别名导致“缺少右括号”错误的重复
- javascript - JavaScript 等价于 php DOMDocument 对象
- reactjs - Material UI Stepper 在下一个或后退时不保持状态
- javascript - 使用 Node.js 的 fs.watchfile 上的相对路径