O buclă for este foarte valoroasă atunci când trebuie să repetăm o listă de elemente sau o serie de numere. Bucla poate fi utilizată pentru a itera pe o listă, cadru de date, vector, matrice sau orice alt obiect. Parantezele și parantezele pătrate sunt obligatorii.
În acest tutorial, vom învăța,
- Pentru sintaxă și exemple de buclă
- Pentru Buclă peste o listă
- Pentru Buclă peste o matrice
Pentru sintaxă și exemple de buclă
For (i in vector) {Exp}
Aici,
R va face o buclă peste toate variabilele din vector și va face calculul scris în interiorul exp.
Să vedem câteva exemple.
Exemplul 1 : Repetăm toate elementele unui vector și imprimăm valoarea curentă.
# Create fruit vectorfruit <- c('Apple', 'Orange', 'Passion fruit', 'Banana')# Create the for statementfor ( i in fruit){print(i)}
Ieșire:
## [1] "Apple"## [1] "Orange"## [1] "Passion fruit"## [1] "Banana"
Exemplul 2 : creează o funcție neliniară utilizând polinomul lui x între 1 și 4 și îl stocăm într-o listă
# 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)
Ieșire:
## [1] 1 4 9 16
Bucla for este foarte valoroasă pentru sarcinile de învățare automată. După ce am instruit un model, trebuie să regularizăm modelul pentru a evita supra-montarea. Regularizarea este o sarcină foarte plictisitoare, deoarece trebuie să găsim valoarea care minimizează funcția de pierdere. Pentru a ne ajuta să detectăm acele valori, putem folosi o buclă for pentru a itera pe o gamă de valori și a defini cel mai bun candidat.
Pentru Buclă peste o listă
Buclarea peste o listă este la fel de ușoară și comodă ca buclarea peste un vector. Să vedem un exemplu
# 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)}
Ieșire:
## [1] "Apple" "Orange" "Passion fruit" "Banana"## [1] 10 12 15## [1] FALSE
Pentru Buclă peste o matrice
O matrice are 2 dimensiuni, rânduri și coloane. Pentru a itera pe o matrice, trebuie să definim două pentru buclă, și anume unul pentru rânduri și altul pentru coloană.
# 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]))
Ieșire:
## [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"