找到1到k之间n个数字的所有唯一组合

时间:2017-08-17 00:27:26

标签: r combinations

我想要一个列表,列出所有可能的五个(或n个)数字,介于1到63之间(或更普遍地称为1和k)

如果计算时间不是问题,我可以做类似

的事情
 #Get all combenations of numbers between 1 and 63
 indexCombinations <- expand.grid(1:63, 1:63, 1:63, 1:63, 1:63)

 #Throw out the rows that have more than one of the same number in them
 allDifferent <- apply(indexCombinations, 1, function(x){
      length(x) == length(unique(x))
 } # function
 ) # apply

 indexCombinationsValid <- indexCombinations[allDifferent,]

 # And then just take the unique values
 indexCombinationsValidUnique <- unique(indexCombinationsValid)

我担心,独特价值观的发现将会非常缓慢。此外,我最终不得不在我从未使用的第一个地方制作一堆行。我想知道是否有人有更优雅和有效的方法来获得一个值和一些值范围之间的五个数字(或n个数字)中的每一个的唯一组合的数据帧或矩阵。

1 个答案:

答案 0 :(得分:2)

感谢@SymbolixAU提供了一个非常优雅的解决方案,我在此重新发布作为答案:

 n <- 1:63; x <- combn(n, m = 5)