Ich habe eine Matrix vom Typ numerisch, mit Dim 10000 * 50. Jetzt möchte ich den Index der Top 5 Elemente in jeder Zeile in der Reihenfolge von finden ihre Werte. z.B. könnte eine Probe wie folgt aussehen:finde den Index der oberen n Elemente in einem Vektor in Reihenfolge [R]
set.seed(2)
v1 <- matrix(runif(20 , 0 ,20) , 2 ,10)
v1
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,] 3.697645 11.466527 18.87679 2.58318 9.36037 11.053481 15.210266 8.105644 19.527970 8.896185
#[2,] 14.047481 3.361038 18.86950 16.66898 10.99967 4.777895 3.616402 17.070969 4.516509 1.499588
Dann möchte ich die Ausgabe so aussehen:
#[1,] 9 3 7 2 6
#[2,] 3 8 4 1 5
ich nur this question finden könnten, was erklärt, wie oben n Elemente zu finden, aber nicht in der Reihenfolge der Werte.
Beide Werke, aber diese sind langsamer als die Antwort von Richard Scriven vorgeschlagen. base R Lösung benötigt ca. 20% mehr Zeit, während die data.table 80% mehr Zeit benötigt. Danke für den Vorschlag. –
@ViragSwami Vielen Dank für Ihre Nachricht. Ich dachte, die 'data.table' wäre schnell. Wahrscheinlich hat die 'Schmelze' (von reshape2) die Zeit erhöht. – akrun