Habe ich eine Liste von floats in R. Für eine gegebene ganze Zahl, N, ich will zu finden, die Indizes der größten N-Werte in meiner Liste. So zum Beispiel, wenn N 2 ist, ich will finden, die Indizes der beiden größten Werte in meiner Liste. Wie mache ich das?
Kann ich nicht neu anordnen, meine Liste. Dies ist, warum ich muss die Indizes.
Hier ist eine alternative:
Alle anderen aktuellen Antworten erfordern einen Aufruf
order
ausgeführt wird, in O(M log M) Zeit. Wenn N ist viel kleiner als die Anzahl der Elemente M, ein schnellerer Weg ist, um teilweise die Liste zu Sortieren und dann zu extrahieren, die Indizes, die größer als oder gleich der N ' te größte. Dies hat O(M + N log N) Laufzeit und werden viel schneller groß M.Hinweis: dies wird nicht mit Bande in der Liste. Es gibt eine längere Diskussion hier.
Es ist idiomatisch, numerische Daten zu speichern in einen Vektor, der nicht eine Liste. Daher der Aufruf an
unlist
oben.Als eine Funktion, dies kann umgesetzt werden, etwa so:
Du meinst wohl Vektor-und nicht eine Liste, und hier ist ein Beispiel:
Re Kommentar: