Petlja for vrlo je vrijedna kada moramo prelistati popis elemenata ili raspon brojeva. Petlja se može koristiti za prevrtanje popisa, okvira podataka, vektora, matrice ili bilo kojeg drugog objekta. Zagrade i kvadratni nosač su obvezni.
U ovom uputstvu ćemo naučiti,
- Za sintaksu petlje i primjere
- Za Petljavanje popisa
- Za Petlja preko matrice
Za sintaksu petlje i primjere
For (i in vector) {Exp}
Ovdje,
R će se petljati po svim varijablama u vektoru i izvršiti proračun napisan unutar exp.
Pogledajmo nekoliko primjera.
Primjer 1 : Prelistavamo sve elemente vektora i ispisujemo trenutnu vrijednost.
# Create fruit vectorfruit <- c('Apple', 'Orange', 'Passion fruit', 'Banana')# Create the for statementfor ( i in fruit){print(i)}
Izlaz:
## [1] "Apple"## [1] "Orange"## [1] "Passion fruit"## [1] "Banana"
Primjer 2 : stvara nelinearnu funkciju pomoću polinoma x između 1 i 4 i pohranjujemo je na popis
# 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)
Izlaz:
## [1] 1 4 9 16
Petlja for vrlo je vrijedna za zadatke strojnog učenja. Nakon što smo obučili model, moramo ga urediti kako bismo izbjegli prekomjerno uklapanje. Regularizacija je vrlo dosadan zadatak jer moramo pronaći vrijednost koja minimalizira funkciju gubitka. Da bismo nam pomogli otkriti te vrijednosti, možemo koristiti for petlju za iteraciju kroz raspon vrijednosti i definiranje najboljeg kandidata.
Za Petljavanje popisa
Prevlačenje popisa jednako je jednostavno i prikladno kao i prelazak vektora. Pogledajmo primjer
# 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)}
Izlaz:
## [1] "Apple" "Orange" "Passion fruit" "Banana"## [1] 10 12 15## [1] FALSE
Za Petlja preko matrice
Matrica ima 2-dimenzije, retke i stupce. Da bismo prešli preko matrice, moramo definirati dvije for petlje, i to jednu za retke i drugu za stupac.
# 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]))
Izlaz:
## [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"