Was ist der effizienteste Weg, um zwei Vektoren in Lockstep in R zu sortieren? Der erste Vektor sollte in aufsteigender Reihenfolge sortiert werden, und der zweite sollte im Gleichschritt neu angeordnet werden, so dass Elemente mit entsprechenden Indizes vor der Sortierung nach der Sortierung immer noch entsprechende Indizes haben. Zum Beispiel:Der effizienteste Weg, um zwei Vektoren in Lockstep in R zu sortieren?
foo <- c(1,3,2, 5,4)
bar <- c(2,6,4,10,8)
sort2(foo, bar)
# foo == c(1,2,3,4, 5)
# bar == c(2,4,6,8,10)
Hinweis: Die Effizienz ist ein absolutes Muss hier wie ich versuche, dies als Basis zu verwenden, zum Erstellen eines O (N log N) Implementierung von Kendall-Tau als Patch einzureichen. Ich würde gerne vermeiden, meine eigene spezielle Funktion in C zu schreiben, um dies zu tun, aber wäre bereit, wenn es nicht effizient innerhalb von R getan werden kann.
Dank. Dies ist nicht der effizienteste Weg (eine zusätzliche Indirektion ist involviert), aber es ist definitiv gut genug. – dsimcha
Dies ist * der effizienteste Weg. R verändert Objekte nicht an Ort und Stelle - und wenn Sie den Quellcode für 'sort.default' betrachten, werden Sie sehen, dass intern' order() 'verwendet wird. – hadley