Erzeugt eindeutige Muster von Zahlen (z. B. 1221 als gleiches Muster wie 2112)

8

Ich habe einen Datenrahmen mit 7 verschiedenen Verdünnungen, die ich in 3 verschiedenen Behältern in allen möglichen Kombinationen für die spätere Verwendung in lpSolve zuordnen möchte. Ich kann alle 2187 möglichen Kombinationen erzeugen mit:

%Vor%

Da jedoch die tatsächliche bin-Nummer nicht wichtig ist (aber die Position ist), werden die folgenden Einträge in diesem Zusammenhang alle als identisch betrachtet:

%Vor%

Wie erzeuge ich nur eindeutige "Muster", entweder durch Filtern von expand.grid output oder durch Verwenden einer anderen (benutzerdefinierten) Funktion. Zum Beispiel wären die Längen, die von rle aller obigen Vektoren ausgegeben werden, 2 3 2 , aber das wäre auch der Fall für c(1, 1, 2, 2, 2, 1, 1) , was nicht als identisch mit dem obigen betrachtet werden sollte.

Jeder schnelle Weg um diese? Ich muss nicht höher als 5 Behälter und 8 Verdünnungen gehen.

    
Kristoffer 07.03.2013, 10:38
quelle

3 Antworten

2

Hier ist eine Antwort:

%Vor%

Und Logik ist die folgende: Lassen Sie uns c(3,3,1,2,1,2,3) und jetzt wandle ich es in c(1,1,2,3,2,3,1) , weil 3 die erste eindeutige Nummer von Anfang an ist, 1 ist die Sekunde und 2 ist die dritte. Auf diese Weise konvertiere ich alle Zeilen in das gleiche Format und kann duplicated verwenden. setNames war hier nützlich, es erstellt eine Karte von einer Ganzzahl zu einer anderen Ganzzahl:

%Vor%

Endlich der Beweis:

Dies berücksichtigt Fälle, in denen eine, zwei oder drei verschiedene Zahlen verwendet werden. Insbesondere: [(eine einzelne Zahl nimmt alle 7 Positionen ein)] + [(1 Position für eine Nummer wählen und alle anderen für eine andere Nummer) + (2 Positionen für eine Nummer wählen und alle anderen für eine andere Nummer) + (wählen 3 Positionen und der ganze Rest ist für eine andere)] + [(1 Position für die erste Nummer, 1 Position für die zweite und der Rest ist für die dritte Zahl. Jetzt werden 1. und 2. als gleich betrachtet, und beide kommen vor einmal, also müssen wir diesen Begriff durch zwei teilen) + ... (gleiche Logik wie vorher) ...]

    
Julius 07.03.2013, 11:46
quelle
2

Dies?

%Vor%

Oder wie @Arun gezeigt hat:

%Vor%     
Rcoster 07.03.2013 11:30
quelle
1

Es ist Kombinatorik Frage IMO.

Ich denke für 7 Elemente, dass Sie zuerst 2 wählen und 2 aus den verbleibenden 5 wählen möchten, was insgesamt 210 Kombinationen ergibt.

Dank Arun, der darauf hingewiesen hat, dass die Kombination 11 22 333 die gleiche wie 22 11 333 ist, können wir folgern, dass, da die ersten beiden Elemente austauschbar sind, die erforderliche Anzahl von Kombinationen die Hälfte von 210, also 105, sein sollte

%Vor%     
Chinmay Patil 07.03.2013 16:51
quelle

Tags und Links