0Pricing
R Academy · Lekcja

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 i sort(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) lub head(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

  1. Sortowanie wektorów za pomocą sort()
  2. order() do elastycznego sortowania
  3. Ranking wartości za pomocą rank()
  4. Sortowanie ramek danych według kolumny
← Powrót do R Academy