Pętle zagnieżdżone
Część sekcji Podstawy ścieżki R w Coddy. Lekcja 44 z 78.
Możesz umieścić pętlę wewnątrz innej pętli, aby utworzyć pętlę zagnieżdżoną. Pętla wewnętrzna wykonuje się w całości przy każdej iteracji pętli zewnętrznej, co jest przydatne podczas pracy z kombinacjami lub wzorami przypominającymi siatkę.
rows <- 3
cols <- 2
for (i in 1:rows) {
for (j in 1:cols) {
cat("i =", i, ", j =", j, "\n")
}
}Wynik:
i = 1 , j = 1
i = 1 , j = 2
i = 2 , j = 1
i = 2 , j = 2
i = 3 , j = 1
i = 3 , j = 2Dla każdej wartości i wewnętrzna pętla przechodzi przez wszystkie wartości j. Gdy i wynosi 1, j zmienia się od 1 do 2. Następnie i staje się równe 2, a j ponownie zaczyna od 1 i zmienia się do 2. rows i cols nigdy się nie zmieniają: tylko informują pętle, kiedy mają się zatrzymać.
Praktycznym przykładem jest utworzenie prostego wzoru mnożenia:
for (row in 1:3) {
for (col in 1:3) {
cat(row * col, " ")
}
cat("\n")
}Wynik:
1 2 3
2 4 6
3 6 9Pętla zewnętrzna kontroluje wiersze, a pętla wewnętrzna obsługuje każdą kolumnę w danym wierszu. Po ukończeniu każdego wiersza wypisujemy znak nowej linii, aby przejść do następnej linii.
Wyzwanie
ŁatwyWczytaj z wejścia dwie liczby: rows i cols.
Użyj zagnieżdżonych pętli, aby wypisać prostokąt liczb, w którym każda komórka zawiera sumę numeru wiersza i numeru kolumny. Wiersze są numerowane od 1 do rows, a kolumny od 1 do cols.
Wypisz każdy wiersz w osobnej linii, oddzielając wartości pojedynczą spacją. Użyj cat() do wypisywania, dodając znak nowej linii po każdym wierszu.
Na przykład, jeśli dane wejściowe to 3 i 4, wynik powinien wyglądać tak:
2 3 4 5
3 4 5 6
4 5 6 7W pierwszym wierszu (wierszu 1) wartości to 1+1=2, 1+2=3, 1+3=4, 1+4=5. W drugim wierszu (wierszu 2) wartości to 2+1=3, 2+2=4, 2+3=5, 2+4=6 i tak dalej.
cat() wstawia spację między przekazanymi wartościami, więc cat(row + col, "") wypisuje liczbę, po której następuje dokładnie jedna spacja.
Użyj nowego licznika w każdej pętli (na przykład row dla wierszy i col dla liczb w wierszu) i porównuj go z rows lub cols. Nie zmieniaj samych rows i cols: każdy wiersz potrzebuje ponownie wartości cols.
Spróbuj swoich sił
# Wczytaj dane wejściowe
con <- file("stdin", "r")
rows <- as.integer(suppressWarnings(readLines(con, n = 1)))
cols <- as.integer(suppressWarnings(readLines(con, n = 1)))
close(con)
# TODO: Napisz swój kod poniżej
# Użyj zagnieżdżonych pętli, aby wypisać prostokąt, w którym każda komórka zawiera sumę numeru wiersza i numeru kolumny
# Użyj cat(), aby wypisać wartości oddzielone spacjami, dodając znak nowej linii po każdym wierszuTa 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ówPoćwicz samodzielnie: Kompilator R online