我陷入了一道数学问题。我想创建一个函数,输出将整数“n”分为“k”组的所有方式,使得每个组中“k”至少为1(k >= 1)。
该函数可能类似于:
n_ways <- function(n,k) {...}
我想要一个数据帧作为输出。因此对于:n_ways(5,3)
A B C
1 3 1 1
2 1 3 1
3 1 1 3
4 2 2 1
5 2 1 2
6 1 2 2
解决方案在数据框中呈现的顺序并不重要。
我寻找类似的解决方案here https://stackoverflow.com/questions/14753987/find-all-possible-ways-to-split-a-list-of-elements-into-a-a-given-number-of-grou以及其他语言,例如here https://stackoverflow.com/questions/20395235/create-all-possible-ways-of-putting-n-users-into-k-groups and here https://stackoverflow.com/questions/32344316/an-iterative-rather-than-recursive-algorithm-to-find-all-ways-to-split-n-into-m。不幸的是,我不太擅长基于此创建一个适合我的问题的函数,但希望你是。
预先非常感谢!
您可以使用partitions
包裹:
library(partitions)
t(compositions(5, 3, FALSE))
#[1,] 3 1 1
#[2,] 2 2 1
#[3,] 1 3 1
#[4,] 2 1 2
#[5,] 1 2 2
#[6,] 1 1 3
来自相应的帮助文件
函数 Composition() 返回整数的所有 2^(n-1) 种划分方式;因此 4 + 1 + 1 不同于 1 + 4 + 1 或 1 + 1 + 4。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)