Iterowanie po elementach wektora
Część sekcji Podstawy ścieżki R w Coddy. Lekcja 63 z 78.
Chociaż operacje wektorowe R są potężne, czasami trzeba przetwarzać każdy element osobno, stosując własną logikę. Pętla for pozwala iterować po elementach tablicy pojedynczo.
Najprostszym sposobem na przejście przez wektor jest bezpośrednie iterowanie po jego elementach:
fruits <- c("apple", "banana", "cherry")
for (fruit in fruits) {
print(fruit)
}Wynik:
[1] "apple"
[1] "banana"
[1] "cherry"W każdej iteracji zmienna pętli fruit przyjmuje wartość kolejnego elementu wektora. To podejście jest przejrzyste i czytelne, gdy potrzebujesz tylko samych wartości.
Możesz łączyć iterację z logiką warunkową, aby przetwarzać wybrane elementy:
numbers <- c(3, 8, 2, 10, 5)
for (num in numbers) {
if (num > 5) {
print(num)
}
}Wynik:
[1] 8
[1] 10Ten wzorzec jest przydatny, gdy trzeba zastosować różne operacje w zależności od wartości każdego elementu — czego nie zawsze można zrobić za pomocą samych operacji wektoryzowanych.
Wyzwanie
ŁatwyOtrzymasz dwa wiersze danych wejściowych:
- Listę liczb rozdzielonych przecinkami (np.
12,5,18,3,25,8,14) - Wartość progową (np.
10)
Użyj pętli for, aby iterować po elementach wektora:
- Utwórz wektor z liczb rozdzielonych przecinkami
- Przejdź przez każdy element wektora
- Dla każdego elementu, który jest większy od lub równy wartości progowej, wypisz ten element za pomocą
print()
Na przykład, jeśli dane wejściowe to:
4,15,8,22,6,19,11
10Wynik powinien być następujący:
[1] 15
[1] 22
[1] 19
[1] 11Wyjaśnienie: Pętla sprawdza każdy element w odniesieniu do wartości progowej (10). Elementy 15, 22, 19 i 11 są większe od lub równe 10, więc zostają wypisane. Elementy 4, 8 i 6 są pomijane.
Spróbuj swoich sił
# Odczytaj dane wejściowe
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
threshold <- as.numeric(suppressWarnings(readLines(con, n = 1)))
close(con)
# Przekształć ciąg znaków rozdzielony przecinkami w wektor liczb
numbers <- as.numeric(unlist(strsplit(numbers_input, ",")))
# TODO: Napisz swój kod poniżej
# Użyj pętli for, aby przejść przez wektor numbers
# Dla każdego elementu >= threshold wypisz go za pomocą print()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 FizzBuzz2Zmienne 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ów12Iterowanie po sekwencjach
Iterowanie po elementach wektoraUżywanie seq_along()Iterowanie po znakach (strsplitFunkcje manipulacji ciągami znakówPoćwicz samodzielnie: Kompilator R online