Menu
Coddy logo textTech

Sortowanie wektorów

Część sekcji Logika i przepływ sterowania ścieżki R w Coddy. Lekcja 37 z 64.

sort(x) zwraca wartości x w kolejności rosnącej, a decreasing = TRUE odwraca tę kolejność. Oryginalny wektor nie ulega zmianie:

scores <- c(72, 95, 60, 88)
print(sort(scores))
print(sort(scores, decreasing = TRUE))
print(scores)

Wynik:

[1] 60 72 88 95
[1] 95 88 72 60
[1] 72 95 60 88

Tekst jest sortowany alfabetycznie. Dokładna kolejność zależy od ustawień językowych systemu: na Coddy, tak jak na wielu serwerach, wielkie litery są przed małymi, więc "Zed" jest sortowane przed "ada". Użyj tolower(), gdy wielkość liter nie powinna mieć znaczenia:

names <- c("cy", "Zed", "ada")
print(sort(names))
print(sort(tolower(names)))

Wynik:

[1] "Zed" "ada" "cy" 
[1] "ada" "cy"  "zed"

rev(x) odwraca bieżącą kolejność bez sortowania, a head(x, n) zachowuje pierwsze n elementów, co w połączeniu z sort() daje listę najlepszych wyników:

scores <- c(72, 95, 60, 88)
print(rev(scores))
print(head(sort(scores, decreasing = TRUE), 2))

Wynik:

[1] 88 60 95 72
[1] 95 88

Posortowany nazwany wektor zachowuje każdą nazwę wraz z jej wartością, więc nazwy pojawiają się w kolejności wartości:

stock <- c(tea = 12, jam = 3, oil = 7)
low_first <- sort(stock)
print(names(low_first))
print(low_first[["jam"]])

Wynik:

[1] "jam" "oil" "tea"
[1] 3
challenge icon

Wyzwanie

Łatwy

Uzupełnij top_scores(scores, n). Zwróć n najwyższych wyników, od najwyższego do najniższego, połączonych za pomocą , . Jeśli wyników jest mniej niż n, zwróć je wszystkie.

Dostarczony kod odczytuje wyniki z wiersza, w którym są oddzielone przecinkami, oraz n, a następnie wypisuje zwróconą wartość.

Spróbuj swoich sił

top_scores <- function(scores, n) {
  # Wpisz tutaj swój kod
  ""
}

# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
input <- suppressWarnings(readLines(file("stdin")))
cat(top_scores(as.numeric(strsplit(input[1], ",")[[1]]), as.numeric(input[2])), sep = "\n")
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator R online