Mam wektor danych z 1024 wartościami i muszę policzyć liczbę ujemnych wpisów. Czy istnieje elegancki sposób na zrobienie tego bez pętli i sprawdzenie, czy element jest < 0 i zwiększanie licznika?Elegancki sposób na liczenie ujemnych elementów w wektorze?
Odpowiedz
Chcesz przeczytać "Wprowadzenie do R". Twoja odpowiedź to po prostu
sum( x < 0 )
która działa dzięki wektoryzacji. Wyrażenie x < 0
zwraca wektor wartości binarnych, nad którymi może działać sum()
(przez zamianę wartości binarnych na standardowe wartości 0/1).
Jest dobra odpowiedź na to pytanie od Steve Lianoglou How to identify the rows in my dataframe with a negative value in any column?
Niech mi tylko replikować jego kodu z jednym niewielkim dodatkiem (4 pkt).
Wyobraź sobie, że miał data.frame takiego:
df <- data.frame(a = 1:10, b = c(1:3,-4, 5:10), c = c(-1, 2:10))
To spowoduje powrót logiczną wektor które wiersze mają wartości ujemne:
has.neg <- apply(df, 1, function(row) any(row < 0))
Oto indeksy dla liczb ujemnych:
which(has.neg)
Tutaj jest liczbą elementów z numerami ujemnymi:
length(which(has.neg))
OP ma wektor, więc coś podobnego do długości (x [x <0]) będzie działać. –
- 1. Domyślna konstrukcja elementów w wektorze
- 2. Grupowanie i liczenie elementów
- 3. Znalezienie wielu elementów w wektorze
- 4. liczenie występowania określonej litery w wektorze słów w r
- 5. Jak ustawić zakres elementów w wektorze stl do określonej wartości?
- 6. Efektywne liczenie elementów innych niż NA w data.table
- 7. Zmiana wielu elementów w wektorze R z powtarzających się nazw
- 8. Usunąć określoną grupę elementów w wektorze?
- 9. Najbardziej elegancki sposób na usunięcie elementu ciągowego
- 10. Najbardziej elegancki sposób na sprawdzenie obsługi sessionStorage?
- 11. Elegancki sposób na rejestrowanie.LoggerAdapter dla innych modułów
- 12. R - najszybszy sposób na uzyskanie indeksów maksymalnych n elementów w wektorze
- 13. Elegancki sposób tworzenia zagnieżdżonego słownika w C#
- 14. W jaki sposób liczenie sortuje sortowanie stabilne?
- 15. zmiana Liczenie w Haskell
- 16. Oglądanie zmian DOM, elegancki sposób
- 17. Grupowanie i liczenie elementów HTML według atrybutu danych w jQuery
- 18. Harmonogram w elegancki sposób w C++
- 19. Liczenie w widokach szyn
- 20. Jaki jest najlepszy sposób na stopienie listy w wektorze?
- 21. Znalezienie najbardziej typowych elementów w wektorze w R
- 22. Elegancki sposób wykonywania arytmetycznej krotki
- 23. Szyny: Elegancki sposób obsługi nawigacji?
- 24. Elegancki sposób analizowania adresu URL:
- 25. elegancki sposób na wdrożenie aktualizacji iOS w aplikacji (odblokowywanie funkcji)
- 26. Elegancki sposób na pobranie nazwy katalogu w Pythonie?
- 27. Bardziej elegancki sposób na sprawdzenie duplikatów w tablicy C++?
- 28. Elegancki sposób na uniknięcie .put() na niezmienionych jednostkach
- 29. Elegancki sposób zgłaszania brakujących wartości w data.frame
- 30. Elegancki sposób odwrócenia mapy w Scala
Wektor nie przekształca się do liczby (w późniejszych wersjach R tak) - suma logiczna pracuje na wprost. Można to łatwo zaobserwować. 'x <- rep (c (T, F), 2^30-1) powoduje, że moja sesja R RSS wzrośnie do ~ 8G. 'sum (x)' nie zwiększa tego. Jednakże 'suma (as.numeric (x))' powoduje, że RSS wzrasta do ~ 25G (i oczywiście zwraca tę samą wartość). –
Jeśli zbiór danych ma wartości NA, polecenie powinno być sumą (x <0, na.rm = TRUE). W przeciwnym razie zwraca NA w wyniku – andrii