Menu
Coddy logo textTech

Zliczanie za pomocą table()

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

table(x) zlicza, ile razy występuje każda wartość. Wynik jest nazwany wartościami, posortowanymi alfabetycznie, więc liczba wystąpień danej wartości to t[["value"]]:

votes <- c("tea", "coffee", "tea", "juice", "tea")
t <- table(votes)
print(t[["tea"]])
print(names(t))
print(as.vector(t))

Wynik:

[1] 3
[1] "coffee" "juice"  "tea"   
[1] 1 1 3

sort(t, decreasing = TRUE) porządkuje liczebności od największej do najmniejszej. which.max(t) zwraca pozycję największej liczebności; gdy liczebności są takie same, wybiera pierwszą, czyli alfabetycznie pierwszą wartość:

votes <- c("tea", "coffee", "tea", "juice", "coffee")
t <- table(votes)
print(names(t)[which.max(t)])
print(max(t))

Wynik:

[1] "coffee"
[1] 2

Wartość, która nigdy nie występuje, w ogóle nie znajduje się w tabeli, więc przed jej odczytaniem sprawdź za pomocą %in% names(t):

t <- table(c("A", "B", "A"))
for (grade in c("A", "B", "C")) {
  n <- if (grade %in% names(t)) t[[grade]] else 0
  cat(grade, n, "\n")
}

Wynik:

A 2 
B 1 
C 0 

table() zlicza również liczby i wartości logiczne. Aby zliczyć pojedynczą wartość, sum(x == value) jest krótsze niż tworzenie tabeli:

rolls <- c(6, 2, 6, 6, 1)
print(sum(rolls == 6))
print(table(rolls > 3)[["TRUE"]])

Wynik:

[1] 3
[1] 3
challenge icon

Wyzwanie

Łatwy

Uzupełnij vote_winner(votes). Zwróć opcję z największą liczbą głosów, a następnie jej liczbę, jak w tea (3 votes). Jeśli opcje mają tyle samo głosów, zwróć tę, która jest pierwsza alfabetycznie.

Dostarczony kod odczytuje głosy jako wiersz rozdzielony przecinkami i wypisuje zwróconą wartość.

Spróbuj swoich sił

vote_winner <- function(votes) {
  # Wpisz tutaj swój kod
  ""
}

# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
input <- suppressWarnings(readLines(file("stdin")))
cat(vote_winner(strsplit(input[1], ",")[[1]]), 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