Sortowanie wektorów za pomocą sort()
Sortuj wektory liczbowe i znakowe rosnąco lub malejąco.
Sortowanie wektorów za pomocą sort() to bezpłatna lekcja R Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej R Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs R Academy zawiera 4 lekcji w sumie.
Co robi sort()
Funkcja sort() domyślnie układa elementy wektora w kolejności rosnącej. Działa na wektorach liczbowych, tekstowych i logicznych, zwracając nowy posortowany wektor bez modyfikowania oryginału.
scores <- c(42, 7, 95, 13, 67, 31)
sorted_scores <- sort(scores)
print(sorted_scores)Sortowanie w kolejności malejącej
Przekazanie argumentu decreasing = TRUE do sort() odwraca kolejność. Jest to przydatne podczas tworzenia rankingu od najwyższego do najniższego wyniku, na przykład dla wyników w tabeli liderów lub danych o sprzedaży.
prices <- c(19.99, 5.49, 89.00, 34.50, 12.75)
sort(prices, decreasing = TRUE)Sortowanie wektorów tekstowych
Wektory tekstowe są sortowane leksykograficznie (alfabetycznie). R używa ustawień regionalnych systemu, dlatego wielkie litery mogą być sortowane przed małymi — zależnie od ustawień regionalnych.
fruits <- c('banana', 'Apple', 'cherry', 'apricot', 'Blueberry')
sort(fruits)Sortowanie z uwzględnieniem wielkości liter
W większości ustawień regionalnych wielkie litery są sortowane przed małymi. Aby sortować bez uwzględniania wielkości liter, należy najpierw ujednolicić wielkość liter za pomocą tolower() lub toupper(), a dopiero potem sortować.
words <- c('Zebra', 'apple', 'Mango', 'banana')
# Case-sensitive (uppercase first)
sort(words)
# Case-insensitive approach
words[order(tolower(words))]Obsługa wartości NA za pomocą na.last
Domyślnie sort() usuwa wartości NA. Argument na.last = TRUE umieszcza wartości NA na końcu, a na.last = FALSE — na początku. W ten sposób można określić położenie brakujących wartości w wyniku.
data <- c(5, NA, 2, NA, 8, 1)
# Default: NAs removed
sort(data)
# NAs at end
sort(data, na.last = TRUE)
# NAs at beginning
sort(data, na.last = FALSE)Sortowanie wektorów logicznych
Wektory logiczne w kolejności rosnącej są sortowane tak, że FALSE (0) znajduje się przed TRUE (1). Może to być przydatne, gdy chcą Państwo pogrupować wartości TRUE/FALSE.
flags <- c(TRUE, FALSE, TRUE, FALSE, FALSE, TRUE)
sort(flags)
sort(flags, decreasing = TRUE)sort() zachowuje typ wektora
sort() zawsze zwraca wektor tego samego typu co dane wejściowe. Sortowanie liczb całkowitych zwraca liczby całkowite, sortowanie wartości double — wartości double, a sortowanie tekstu — tekst. Atrybut klasy zostaje zachowany.
int_vec <- c(5L, 2L, 8L, 1L, 4L)
result <- sort(int_vec)
print(result)
print(class(result))
print(typeof(result))sort.int() do sortowania liczb całkowitych
sort.int() to funkcja niższego poziomu przeznaczona konkretnie do sortowania wektorów liczb całkowitych lub wartości double. Przyjmuje te same argumenty co sort(), ale w przypadku dużych wektorów liczbowych jest nieco szybsza, ponieważ pomija część narzutu związanego z wyborem metody.
big_vec <- c(100L, 3L, 77L, 22L, 55L, 9L)
# sort.int works like sort for numeric/integer vectors
result <- sort.int(big_vec, decreasing = FALSE)
print(result)Oryginalny wektor pozostaje niezmieniony
Ważną właściwością funkcji sort() jest to, że nie modyfikuje ona oryginalnego wektora. Zwraca nowy, posortowany wektor. Aby zachować posortowaną kolejność, należy przypisać wynik do zmiennej.
temps <- c(22.5, 18.0, 30.1, 15.3, 27.8)
sorted_temps <- sort(temps)
cat('Original:', temps, '\n')
cat('Sorted: ', sorted_temps, '\n')Sortowanie i indeksowanie razem
Czasami potrzebne są zarówno posortowane wartości, jak i ich pierwotne pozycje. Należy połączyć sort() z which() albo użyć funkcji order() (omówionej w następnej lekcji), aby pobrać oryginalne indeksy wraz z posortowanymi wartościami.
exam_scores <- c(78, 92, 65, 88, 71)
sorted <- sort(exam_scores)
cat('Sorted scores:', sorted, '\n')
# Find what rank each original score gets
ranks <- rank(exam_scores)
cat('Rank of each student:', ranks, '\n')Praktyczne wzorce użycia sort()
Częstym wzorcem jest sortowanie unikatowych wartości z wektora albo pobieranie N największych wartości za pomocą połączenia sort() z head() lub tail().
sales <- c(120, 340, 95, 210, 340, 180, 95, 420)
# Unique values in order
sort(unique(sales))
# Top 3 largest
tail(sort(sales), 3)
# Bottom 3 smallest
head(sort(sales), 3)Szybki test
Który argument określa, czy wartości NA podczas używania sort() pojawią się na początku, na końcu czy zostaną usunięte?
Najważniejsze informacje o sort()
Najważniejsze informacje o sort():
- Użyj
sort(x)do sortowania rosnącego isort(x, decreasing=TRUE)do sortowania malejącego - Wektory tekstowe są sortowane alfabetycznie; domyślnie wielkość liter ma znaczenie
- Położenie wartości NA kontroluje argument
na.last = TRUE/FALSE/NA sort()nie modyfikuje oryginalnego wektora — zawsze zwraca nowy- Użyj
tail(sort(x), n)lubhead(sort(x), n), aby uzyskać N największych lub N najmniejszych wartości sort.int()jest szybszym wariantem dla wektorów liczbowych i całkowitoliczbowych
x <- c(3, 1, NA, 5, 2, NA, 4)
cat('Ascending (no NAs):', sort(x), '\n')
cat('Descending (NAs last):', sort(x, decreasing = TRUE, na.last = TRUE), '\n')Często zadawane pytania
Czy lekcja „Sortowanie wektorów za pomocą sort()” jest bezpłatna?
Tak — pełny tekst „Sortowanie wektorów za pomocą sort()” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu R Academy, przejdź na CoddyKit PRO. Kurs R Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Sortowanie wektorów za pomocą sort()”?
Sortuj wektory liczbowe i znakowe rosnąco lub malejąco. Ćwiczysz R Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć R Academy?
Nie wymagamy żadnego doświadczenia. R Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Sortowanie wektorów za pomocą sort()”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji R Academy?
Tak. Każda lekcja R Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Sortowanie wektorów za pomocą sort()
- order() do elastycznego sortowania
- Ranking wartości za pomocą rank()
- Sortowanie ramek danych według kolumny