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 podczas każdej iteracji pętli zewnętrznej, co jest przydatne podczas pracy z kombinacjami lub wzorami przypominającymi siatkę.
for (i in 1:3) {
for (j in 1:2) {
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 pętla wewnętrzna przechodzi przez wszystkie wartości j. Gdy i wynosi 1, j przyjmuje wartości od 1 do 2. Następnie i przyjmuje wartość 2, a j ponownie zaczyna od 1 i dochodzi do 2.
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
ŁatwyOdczytaj 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 i dodaj znak nowej linii po każdym wierszu.
Na przykład, jeśli dane wejściowe to 3 i 4, wynik powinien być następujący:
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.
Spróbuj swoich sił
# Odczytaj 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 row + column
# Użyj cat(), aby wypisać wartości oddzielone spacjami, dodając znak nowego wiersza 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