Indeksowanie logiczne
Część sekcji Podstawy ścieżki R w Coddy. Lekcja 68 z 78.
Zamiast określać dokładne pozycje, możesz użyć wektora logicznego, aby wybrać elementy. Ta technika, nazywana indeksowaniem logicznym, pozwala filtrować wektor na podstawie warunków, a nie pozycji.
Gdy zastosujesz porównanie do wektora, R zwróci wektor logiczny o tej samej długości:
numbers <- c(10, 20, 30, 40, 50)
print(numbers > 25)Wynik:
[1] FALSE FALSE TRUE TRUE TRUEMożesz użyć tego wektora logicznego bezpośrednio w nawiasach kwadratowych, aby wyodrębnić pasujące elementy:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers > 25])Wynik:
[1] 30 40 50R zachowuje tylko te elementy, dla których wektor logiczny ma wartość TRUE. To podejście jest znacznie czytelniejsze niż filtrowanie danych za pomocą pętli. Możesz łączyć warunki za pomocą operatorów logicznych:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers >= 20 & numbers <= 40])Wynik:
[1] 20 30 40Indeksowanie logiczne to jedna z najpotężniejszych funkcji R służących do manipulowania danymi. Umożliwia filtrowanie zbiorów danych za pomocą prostych, czytelnych wyrażeń.
Wyzwanie
ŁatwyOtrzymasz dwa wiersze danych wejściowych:
- Listę liczb oddzielonych przecinkami (np.
15,42,8,67,23,91,34,12,56) - Dwie wartości progowe oddzielone przecinkiem, określające zakres (np.
20,60)
Używając indeksowania logicznego:
- Utwórz wektor numeryczny z liczb oddzielonych przecinkami
- Wyodrębnij i wypisz wszystkie elementy mniejsze niż pierwszy próg (dolna granica)
- Wyodrębnij i wypisz wszystkie elementy większe niż drugi próg (górna granica)
- Wyodrębnij i wypisz wszystkie elementy mieszczące się w zakresie (większe niż lub równe pierwszemu progowi ORAZ mniejsze niż lub równe drugiemu progowi)
Na przykład, jeśli dane wejściowe to:
5,25,10,45,60,15,80,35,50
20,50Wynik powinien być następujący:
[1] 5 10 15
[1] 60 80
[1] 25 45 35 50Wyjaśnienie:
- Elementy mniejsze niż 20: 5, 10, 15
- Elementy większe niż 50: 60, 80
- Elementy w przedziale od 20 do 50 (włącznie): 25, 45, 35, 50
Użyj operatora &, aby połączyć warunki filtra zakresu.
Spróbuj swoich sił
# Wczytaj dane wejściowe
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
thresholds_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# Przekształć liczby oddzielone przecinkami w wektor liczb
numbers <- as.numeric(unlist(strsplit(numbers_input, ",")))
# Przekształć wartości progowe w liczby
thresholds <- as.numeric(unlist(strsplit(thresholds_input, ",")))
lower_bound <- thresholds[1]
upper_bound <- thresholds[2]
# TODO: Napisz swój kod poniżej
# 1. Użyj indeksowania logicznego, aby wybrać elementy mniejsze niż lower_bound i je wypisać
# 2. Użyj indeksowania logicznego, aby wybrać elementy większe niż upper_bound i je wypisać
# 3. Użyj indeksowania logicznego z operatorem &, aby wybrać elementy z podanego przedziału (włącznie z jego granicami) i je wypisaćTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory, część 2
Operatory logiczne (AND, OR)Operatory logiczne, część 2 (NOT)Powtórka — prosta logikaLogika wektoryzowana, część 1Logika wektoryzowana, część 27Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych od użytkownika10FizzBuzz z niespodzianką
Omówienie gryFunkcja FizzBuzz13Zaawansowane wektory
Wycinanie i indeksowanie wektorówIndeksowanie logiczneArytmetyka wektorów i recyklingOperator %in%2Zmienne i typy danych
Liczbowy typ danychCałkowity typ danychZnakowy typ danychLogiczny typ danychSprawdzanie typów danychKonwencje nazewnictwaBrakujące wartości: NAPodsumowanie – tworzenie zmiennych8Pętle
Pętla forPętla whilePrzerwijNastępna iteracja (continue)Powtórka — silniaGenerowanie sekwencji (seq, :)Pętle zagnieżdżonePowtórka — dynamiczne wprowadzanie danych3Operatory, część 1
Operatory arytmetyczneDzielenie całkowite i moduloOperatory przypisaniaPowtórka — prosta matematykaOperatory porównania6Podstawowe wejście/wyjście
Wyświetlanie danychCat jako wyjścieWyjście z użyciem zmiennychOdczyt danych wejściowych za pomocą readline()Podstawy konwersji typówPowtórka — kalkulator wiekuPowtórka — prawda czy fałsz9Funkcje
Deklarowanie funkcjiArgumenty funkcjiWartości zwracanePowtórzenie — funkcja SigmaPowtórzenie — funkcja walidującaDomyślne wartości parametrówPoćwicz samodzielnie: Kompilator R online