Mam wektor i jestem w stanie zwrócić najwyższą i najniższą wartość, ale jak zwrócić 5 najwyższych wartości? Czy istnieje do tego proste rozwiązanie jednokierunkowe?Jak zwrócić 5 najwyższych wartości z wektora w R?
20
A
Odpowiedz
32
> a <- c(1:100)
> tail(sort(a),5)
[1] 96 97 98 99 100
2
Tak, head(X, 5)
gdzie X
jest twoim posortowanym wektorem.
12
x[order(x)[1:5]]
3
tail(sort.int(x, partial=length(x) - 4), 5)
Korzystanie sort.int z częściowym ma tę zaletę, że jest (potencjalnie) szybciej (potencjalnie) nie robi pełnego sortowania. Ale w rzeczywistości moja implementacja wydaje się nieco wolniejsza. Być może dzieje się tak dlatego, że przy częściowym parametrze! = NULL zamiast sortowania szybkiego używa się sortowania skorupowego?
> x <- 1:1e6
> system.time(replicate(100, tail(sort.int(x, partial=length(x) - 4), 5)))
user system elapsed
4.782 0.846 5.668
> system.time(replicate(100, tail(sort(x), 5)))
user system elapsed
3.643 0.879 4.854
+0
Jeśli zamiast tego użyjesz x <-runif (1e6), zobaczysz korzyści. Zauważ, że te 5 wartości, które otrzymasz, byłyby rzeczywiście najwyższymi 5, ale niekoniecznie w porządku posortowanym. – Tommy
Powiązane problemy
- 1. Jak mapować wektor wartości do innego wektora z własną mapą w R
- 2. Replikacja wektora w R
- 3. Jak zwrócić opcję podczas czytania wektora
- 4. Dodawanie wartości po każdym n-tym elemencie wektora w R
- 5. Podział wektora za pomocą innego wektora logicznego w R
- 6. Jak zwrócić wiele wartości?
- 7. Jak wstawić wartości z wektora po przekątnej do macierzy w R?
- 8. Jak zwrócić wartości w złączu jako tablicę?
- 9. Maksymalna długość wektora w R
- 10. Powtórz elementy wektora w R
- 11. Posiadanie wektora weak_ptr, chcesz zwrócić wektor shared_ptr
- 12. R: wybieranie pozycji spełniających kryteria z wektora
- 13. Schemat Jak zwrócić wiele wartości?
- 14. Uzyskiwanie najwyższych wyników w DOŁĄCZU
- 15. Przypisanie wektora do określonego istniejącego wiersza tabeli danych w R
- 16. R: usuwanie ostatnich elementów wektora
- 17. Dodaj punkty na najwyższych ocenach
- 18. Dodawanie wielu wartości do wektora
- 19. mongodb jak zwrócić listę wartości tylko z zapytania wyszukiwania
- 20. Kombajny każdy element wektora z innym wektorem w R
- 21. Extract wszystkie wartości z listy list z nazwą samego wektora
- 22. Jak usunąć wszystkie NA z wektora?
- 23. Jak mogę zwrócić dwie wartości z funkcji w Pythonie?
- 24. Solr hierarchiczne aspekty: jak uzyskać wszystkie wartości drugiego poziomu dla najwyższych N wartości pierwszego poziomu
- 25. R: Jak uzyskać pierwszą datę z wektora? <- min (POSIXct_vector)
- 26. Dopasowywanie wektora wartości domyślnych za pomocą match.arg() z lub bez błędu [R]
- 27. Nie można zwrócić wartości z funkcji
- 28. Jak zwrócić obiekt z funkcji?
- 29. Utwórz macierz korelacji z wektora korelacji w R
- 30. R dostępu do wektora kolumny macierzy nazwy
lub 'głowicy (rodzaj (a, zmniejszając = PRAWDA), 5) ' – Marek
ogon jest nieznacznie szybszy niż głowy i zmniejszanie = PRAWDA > x <- rnorm (50000000) > system.time (ogon (sortowanie (x), 5)) układ użytkownik upływie 22,64 0,25 22,95 > system.time (łbem (sortowania (x, zmniejszając = PRAWDA), 5)) układ użytkownik upływie 23,26 0,20 23,51 – Thierry
@Thierry można powinny uruchom to więcej niż raz i poświęć średni czas. Bo myślę, że nie ma różnicy (statystycznie rzecz biorąc) na podstawie moich symulacji. – Marek