Comment trouver le plus grand de N éléments dans une liste R?
J'ai une liste de flotte dans R. Pour un entier, N, je veux trouver la indices de la plus grande N des valeurs dans ma liste. Ainsi, par exemple, si N est 2, je veux trouver les indices des deux plus grandes valeurs dans ma liste. Comment dois-je faire?
Je ne peut pas réorganiser ma liste. C'est pourquoi j'ai besoin d'indices.
OriginalL'auteur user2560984 | 2013-07-12
Vous devez vous connecter pour publier un commentaire.
Aucune réponse nécessite la réorganisation de vos données.
oui mais ils ne font pas de retour à la indicies, ils ont juste de retour de la valeur réelle...
OriginalL'auteur Hong Ooi
Voici une alternative:
OriginalL'auteur QuantIbex
Toutes les autres réponses nécessitent un appel à
order
qui va s'exécuter en O(M log M) temps. Si N est beaucoup plus petit que le nombre total d'éléments de M, un moyen plus rapide est partiellement trier la liste et puis d'extraire les indices supérieure ou égale à la N-ième plus grande. Cela a O(M + N log N) temps d'exécution et sera beaucoup plus rapide pour les gros M.Noter que ce ne traitera pas avec les liens dans la liste. Il n'y a plus de discussion ici.
Il est idiomatiques pour stocker des données numériques dans un vecteur et non une liste. D'où l'appel à
unlist
ci-dessus.Comme une fonction, ce qui peut être mis en œuvre comme suit:
OriginalL'auteur John
Tu veux sans doute dire le vecteur et non une liste, et voici un exemple:
Re commentaire:
OriginalL'auteur eddi