Zanka for je zelo dragocena, kadar moramo itirirati po seznamu elementov ali območju števil. Zanka se lahko uporablja za ponovitev seznama, podatkovnega okvira, vektorja, matrike ali katerega koli drugega predmeta. Oporniki in oglati oklepaji so obvezni.
V tej vadnici se bomo naučili,
- Za sintakso zanke in primere
- Za Loop over a list
- Za Loop over matrix
Za sintakso zanke in primere
For (i in vector) {Exp}
Tukaj,
R bo zavil vse spremenljivke v vektorju in izvedel izračun, zapisan znotraj exp.
Oglejmo si nekaj primerov.
Primer 1 : Ponovimo vse elemente vektorja in natisnemo trenutno vrednost.
# Create fruit vectorfruit <- c('Apple', 'Orange', 'Passion fruit', 'Banana')# Create the for statementfor ( i in fruit){print(i)}
Izhod:
## [1] "Apple"## [1] "Orange"## [1] "Passion fruit"## [1] "Banana"
Primer 2 : ustvari nelinearno funkcijo z uporabo polinoma x med 1 in 4 in jo shranimo na seznam
# Create an empty listlist <- c()# Create a for statement to populate the listfor (i in seq(1, 4, by=1)) {list[[i]] <- i*i}print(list)
Izhod:
## [1] 1 4 9 16
Zanka for je zelo pomembna za naloge strojnega učenja. Potem ko smo izurili model, ga moramo urediti, da se izognemo prekomernemu prileganju. Regularizacija je zelo mučna naloga, saj moramo najti vrednost, ki minimalizira funkcijo izgube. Za lažje odkrivanje teh vrednosti lahko uporabimo zanko for, da preletimo obseg vrednosti in določimo najboljšega kandidata.
Za Loop over a list
Zavijanje po seznamu je prav tako enostavno in priročno kot zapiranje vektorja. Poglejmo primer
# Create a list with three vectorsfruit <- list(Basket = c('Apple', 'Orange', 'Passion fruit', 'Banana'),Money = c(10, 12, 15), purchase = FALSE)for (p in fruit){print(p)}
Izhod:
## [1] "Apple" "Orange" "Passion fruit" "Banana"## [1] 10 12 15## [1] FALSE
Za Loop over matrix
Matrica ima dvodimenzionalne vrstice in stolpce. Za iteracijo po matriki moramo definirati dve for zanki, in sicer eno za vrstice in drugo za stolpec.
# Create a matrixmat <- matrix(data = seq(10, 20, by=1), nrow = 6, ncol =2)# Create the loop with r and c to iterate over the matrixfor (r in 1:nrow(mat))for (c in 1:ncol(mat))print(paste("Row", r, "and column",c, "have values of", mat[r,c]))
Izhod:
## [1] "Row 1 and column 1 have values of 10"## [1] "Row 1 and column 2 have values of 16"## [1] "Row 2 and column 1 have values of 11"## [1] "Row 2 and column 2 have values of 17"## [1] "Row 3 and column 1 have values of 12"## [1] "Row 3 and column 2 have values of 18"## [1] "Row 4 and column 1 have values of 13"## [1] "Row 4 and column 2 have values of 19"## [1] "Row 5 and column 1 have values of 14"## [1] "Row 5 and column 2 have values of 20"## [1] "Row 6 and column 1 have values of 15"## [1] "Row 6 and column 2 have values of 10"