将 n 拆分为 k 组的所有可能方法 - R

Rob*_*nvG 4 math combinations r

我被困在一个数学问题中。我想制作一个函数,输出整数“n”可以分为“k”组的所有方式,使得每组“k”至少为1(k> = 1)。

该函数可能类似于:

n_ways <- function(n,k) {...}
Run Code Online (Sandbox Code Playgroud)

我想要一个数据帧作为输出。所以对于: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
Run Code Online (Sandbox Code Playgroud)

解决方案在数据帧中出现的顺序并不重要。

在此处此处此处等其他语言中寻找解决方案。不幸的是,我不太擅长基于此制作适合我的问题的功能,但希望您是。

非常感谢!

cry*_*111 5

您可以使用该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
Run Code Online (Sandbox Code Playgroud)

从各自的帮助文件

函数 composition() 返回对整数进行分区的所有 2^(n-1) 种方式;因此 4+1+1 不同于 1+4+1 或 1+1+4。