2017-08-17 1 views
1

ich eine Liste aller möglichen Sätze von fünf (oder n) wollen Zahlen zwischen 1 und 63 (oder mehr generalizably 1 und k)finden alle eindeutigen combenations von n Zahlen zwischen 1 und k

Wenn Rechenzeit wasn‘ ein Problem t, ich so etwas wie

#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) 

Die Feststellung der eindeutigen Werte tun könnte, ich bin besorgt, wird untragbar langsam. Außerdem muss ich am Anfang immer ein paar Reihen machen, die ich nie benutze. Ich habe mich gefragt, ob jemand eine elegantere und effizientere Methode hat, um einen Datenrahmen oder eine Matrix von eindeutigen Kombinationen von jeweils fünf Zahlen (oder n Zahlen) zwischen einem und einigen Werten zu erhalten.

+2

ist es das, was Sie versuchen: 'n <- 1:63; x <- combn (n, m = 5) '? – SymbolixAU

+0

Ja tatsächlich. Das ist es wonach ich suche. – ohnoplus

Antwort

2

Credit @SymbolixAU für eine sehr elegante Lösung, die ich wieder Post hier als Antwort:

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