Unikalne wartości
Część sekcji Logika i przepływ sterowania ścieżki R w Coddy. Lekcja 12 z 64.
R nie ma osobnego typu zbioru: zbiór to wektor bez powtarzających się wartości. unique() usuwa powtórzenia i zachowuje pierwsze wystąpienie każdej wartości w pierwotnej kolejności.
tags <- c("r", "stats", "r", "data", "stats")
print(unique(tags))
print(length(unique(tags)))Wynik:
[1] "r" "stats" "data"
[1] 3duplicated() zwraca TRUE dla każdej wartości, która pojawiła się już wcześniej w wektorze. Pierwsze wystąpienie ma wartość FALSE:
ids <- c(7, 3, 7, 9, 3)
print(duplicated(ids))
print(ids[duplicated(ids)])Wynik:
[1] FALSE FALSE TRUE FALSE TRUE
[1] 7 3Obie funkcje porównują dokładne wartości, więc "R" i "r" są różne. Najpierw ujednolić tekst, gdy wielkość liter nie powinna mieć znaczenia:
langs <- c("R", "python", "r", "Python")
print(length(unique(langs)))
print(unique(tolower(langs)))Wynik:
[1] 4
[1] "r" "python"unique() działa również na liczbach, a sort(unique(x)) wyświetla różne wartości w kolejności rosnącej. sum(duplicated(x)) zlicza, ile elementów się powtarza:
rolls <- c(4, 2, 6, 2, 4, 4)
print(sort(unique(rolls)))
print(sum(duplicated(rolls)))Wynik:
[1] 2 4 6
[1] 3Wyzwanie
ŁatwyUzupełnij count_distinct(tags). Zwróć liczbę różnych tagów, ignorując wielkość liter: R i r liczą się jako jeden.
Dostarczony kod odczytuje tagi z wiersza, w którym są oddzielone przecinkami, i wyświetla zwróconą liczbę.
Spróbuj swoich sił
count_distinct <- function(tags) {
# Wpisz tutaj swój kod
0
}
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
input <- suppressWarnings(readLines(file("stdin")))
cat(count_distinct(strsplit(input[1], ",")[[1]]), sep = "\n")
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
1Łańcuchy znaków w szczegółach
Podciągi za pomocą substr()Formatowanie za pomocą sprintf()Dzielenie i łączenieWyszukiwanie w łańcuchach znakówZastępowanie tekstuPowtórka – kreator nazwy użytkownika4Macierze
Tworzenie macierzyIndeksowanie macierzyPodsumowania wierszy i kolumnDziałania na macierzachPowtórka – plan miejsc10Zaawansowane sterowanie przepływem
Funkcja switch()Wektorowe ifelse()repeat i breakFunkcje rekurencyjnePodsumowanie — klasyfikator ocen2Wyszukiwanie wartości po kluczach
Wyszukiwanie nazwanych elementów wektoraSprawdzanie kluczyDodawanie i usuwanie kluczyIterowanie po nazwachPowtórzenie — giełda5Projekt — dziennik ocen
Dodawanie uczniówZapisywanie ocen3Zbiory i zliczanie
Unikalne wartościOperacje na zbiorachTesty przynależnościZliczanie za pomocą table()Podsumowanie — goście wydarzenia6Funkcje jako wartości
Funkcje anonimowePrzekazywanie funkcjiZwracanie funkcjiDomknięcia ze stanemPowtórka — reguły rabatowe9Ramki danych
Tworzenie ramek danychKolumny i wierszeFiltrowanie wierszyDodawanie i sortowaniePodsumowanie – raport sprzedaży12Projekt – śledzenie wydatków
Rejestrowanie wydatkówŁączne wydatkiPoćwicz samodzielnie: Kompilator R online