En for-løkke er meget værdifuld, når vi har brug for at gentage en liste over elementer eller en række numre. Loop kan bruges til at gentage en liste, dataramme, vektor, matrix eller ethvert andet objekt. Seler og firkantede beslag er obligatoriske.
I denne vejledning lærer vi,
- Til loop-syntaks og eksempler
- For Loop over en liste
- For Loop over en matrix
Til loop-syntaks og eksempler
For (i in vector) {Exp}
Her,
R sløjfer over alle variablerne i vektor og foretager beregningen skrevet inde i eksp.
Lad os se et par eksempler.
Eksempel 1 : Vi gentager alle elementerne i en vektor og udskriver den aktuelle værdi.
# Create fruit vectorfruit <- c('Apple', 'Orange', 'Passion fruit', 'Banana')# Create the for statementfor ( i in fruit){print(i)}
Produktion:
## [1] "Apple"## [1] "Orange"## [1] "Passion fruit"## [1] "Banana"
Eksempel 2 : opretter en ikke-lineær funktion ved hjælp af polynomet x mellem 1 og 4, og vi gemmer den på en liste
# 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)
Produktion:
## [1] 1 4 9 16
For-loop er meget værdifuld til maskinlæringsopgaver. Når vi har trænet en model, er vi nødt til at normalisere modellen for at undgå overmontering. Regularisering er en meget kedelig opgave, fordi vi skal finde den værdi, der minimerer tabsfunktionen. For at hjælpe os med at opdage disse værdier kan vi bruge en for loop til at gentage en række værdier og definere den bedste kandidat.
For Loop over en liste
Looping over en liste er lige så let og praktisk som looping over en vektor. Lad os se et eksempel
# 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)}
Produktion:
## [1] "Apple" "Orange" "Passion fruit" "Banana"## [1] 10 12 15## [1] FALSE
For Loop over en matrix
En matrix har 2-dimension, rækker og kolonner. For at gentage en matrix skal vi definere to for loop, nemlig en til rækkerne og en anden til kolonnen.
# 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]))
Produktion:
## [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"