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)
解决方案在数据帧中出现的顺序并不重要。
我在此处和此处和此处等其他语言中寻找解决方案。不幸的是,我不太擅长基于此制作适合我的问题的功能,但希望您是。
非常感谢!
您可以使用该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。