Indeksowanie logiczne
Część sekcji Podstawy ścieżki R w Coddy. Lekcja 68 z 78.
Zamiast podawać dokładne pozycje, możesz użyć wektora logicznego, aby wybrać elementy. Ta technika, nazywana indeksowaniem logicznym, pozwala filtrować wektor na podstawie warunków zamiast pozycji.
Gdy zastosujesz porównanie do wektora, R zwraca 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 prostsze niż pisanie pętli do filtrowania danych. 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. Pozwala filtrować zbiory 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, reprezentujące zakres (np.
20,60)
Używając indeksowania logicznego:
- Utwórz wektor liczbowy z liczb oddzielonych przecinkami
- Wyodrębnij i wypisz wszystkie elementy, które są mniejsze niż pierwszy próg (dolna granica)
- Wyodrębnij i wypisz wszystkie elementy, które są większe niż drugi próg (górna granica)
- Wyodrębnij i wypisz wszystkie elementy, które znajdują się w zakresie (są większe lub równe pierwszemu progowi ORAZ mniejsze 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 między 20 a 50 (włącznie): 25, 45, 35, 50
Użyj operatora &, aby połączyć warunki dla 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 rozdzielone przecinkami w wektor numeryczny
numbers <- as.numeric(unlist(strsplit(numbers_input, ",")))
# Przekształć wartości progowe
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 mieszczące się w przedziale (włącznie z 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