r - 创建包含预算内所有组合的矩阵

标签 r

我正在尝试创建一个矩阵,其中包含一定范围内的所有数字组合,以便行总和为特定值。我不确定是否有一个函数可以实现此目的,或者我是否需要手动创建该函数。我尝试过组合函数,但它不限制总和,因此矩阵很快就会变大。

示例:3 行之和为 5

5,0,0
4,1,0
4,0,1
3,2,0
3,0,2
3,1,1
2,3,0
2,0,3
2,2,1
2,1,2
etc..

最佳答案

这些组合对象称为 partitions (另请参见 here 甚至 here ),并且它们的计算是由 partitions 实现的包裹。

根据您真正想要的,使用以下选项之一:

library(partitions)

## The first argument says you want to enumerate all partitions in which the 
## second argument (5) is broken into three summands, each of which can take a
## maximum value of 5.
blockparts(rep(5,3),5)  ## Equiv: blockparts(c(5,5,5), 5)
#                                              
# [1,] 5 4 3 2 1 0 4 3 2 1 0 3 2 1 0 2 1 0 1 0 0
# [2,] 0 1 2 3 4 5 0 1 2 3 4 0 1 2 3 0 1 2 0 1 0
# [3,] 0 0 0 0 0 0 1 1 1 1 1 2 2 2 2 3 3 3 4 4 5

restrictedparts(5,3)
#              
# [1,] 5 4 3 3 2
# [2,] 0 1 2 1 2
# [3,] 0 0 0 1 1

关于r - 创建包含预算内所有组合的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20618743/

相关文章:

r - R中的Apriori算法,不是否定规则

r - 根据某些条件对 data.frame 进行子集化

r - RStudio在保存之前将R临时脚本文件存储在哪里?

r - 使用 DT 包中的数据表函数对 NA 进行排序

r - 如何找到唯一组/子组对的不等式总和?

r - 匹配字符范围内的元素 n 次

read.csv 参数 stringsAsFactors 不起作用?

正则表达式在逗号和句点之间抓取字符串

r - 将工作代码包装在函数中,它会停止工作

r - 在 plotly 中从 x+y+z=6 方程绘制 3d 平面