Vòng lặp for rất có giá trị khi chúng ta cần lặp qua một danh sách các phần tử hoặc một dải số. Vòng lặp có thể được sử dụng để lặp qua danh sách, khung dữ liệu, vectơ, ma trận hoặc bất kỳ đối tượng nào khác. Các dấu ngoặc nhọn và dấu ngoặc vuông là bắt buộc.
Trong hướng dẫn này, chúng ta sẽ học,
- Đối với Cú pháp và Ví dụ về Vòng lặp
- Vòng lặp qua danh sách
- For Loop over a matrix
Đối với Cú pháp và Ví dụ về Vòng lặp
For (i in vector) {Exp}
Đây,
R sẽ lặp lại tất cả các biến trong vector và thực hiện phép tính được viết bên trong exp.
Hãy xem một vài ví dụ.
Ví dụ 1 : Chúng tôi lặp lại trên tất cả các phần tử của một vectơ và in ra giá trị hiện tại.
# Create fruit vectorfruit <- c('Apple', 'Orange', 'Passion fruit', 'Banana')# Create the for statementfor ( i in fruit){print(i)}
Đầu ra:
## [1] "Apple"## [1] "Orange"## [1] "Passion fruit"## [1] "Banana"
Ví dụ 2 : tạo một hàm phi tuyến tính bằng cách sử dụng đa thức của x từ 1 đến 4 và chúng tôi lưu trữ nó trong một danh sách
# 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)
Đầu ra:
## [1] 1 4 9 16
Vòng lặp for rất có giá trị đối với các tác vụ học máy. Sau khi chúng tôi đã đào tạo một mô hình, chúng tôi cần phải điều chỉnh mô hình đó để tránh quá phù hợp. Quy định hóa là một công việc rất tẻ nhạt vì chúng ta cần phải tìm ra giá trị tối thiểu hóa hàm mất mát. Để giúp chúng tôi phát hiện những giá trị đó, chúng tôi có thể sử dụng vòng lặp for để lặp qua một loạt giá trị và xác định ứng cử viên tốt nhất.
Vòng lặp qua danh sách
Việc lặp qua một danh sách cũng dễ dàng và thuận tiện như lặp qua một vectơ. Hãy xem một ví dụ
# 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)}
Đầu ra:
## [1] "Apple" "Orange" "Passion fruit" "Banana"## [1] 10 12 15## [1] FALSE
For Loop over a matrix
Ma trận có 2 chiều, hàng và cột. Để lặp qua ma trận, chúng ta phải xác định hai vòng lặp for, cụ thể là một vòng lặp cho các hàng và một vòng lặp khác cho cột.
# 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]))
Đầu ra:
## [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"