Vòng lặp là một cấu trúc cơ bản trong lập trình lấy một khối mã và chạy nó lặp đi lặp lại. Vòng lặp for là một trong những loại vòng lặp có trong hầu hết các ngôn ngữ. Các vòng lặp của R là một phần không thể thiếu trong việc phân tích dữ liệu.
Chúng phục vụ nhiều mục đích khác nhau, từ định dạng đầu ra đến chạy các phép tính trên các tập dữ liệu lớn. Việc sử dụng vòng lặp for trong R giúp cho việc phân tích dữ liệu được thực hiện dễ dàng hơn.
Cơ bản của R cho vòng lặp
Vòng lặp for của ngôn ngữ R hoạt động tương tự như vòng lặp for tiêu chuẩn có trong Go và hầu hết các ngôn ngữ lập trình khác. Cho một điểm bắt đầu, nó sẽ chạy mã chứa trong nó một số lần nhất định.
Bộ đếm giữ vòng lặp mà vòng lặp hiện đang bật và bạn có thể truy cập nó từ khối mã được liên kết. Các vòng lặp có thể chạy với một số lần lặp cố định hoặc với tổng độ dài của một mảng, vectơ hoặc danh sách.
Vòng lặp lặp cố định
Các vòng lặp cố định trong R có dạng sau:
for (x in 1:10) {
print(x)
}
Chữ x trong vòng lặp là biến sẽ lưu số lần lặp của vòng lặp.
Sau từ khóa “in” là điểm bắt đầu và điểm kết thúc của vòng lặp. Vòng lặp sẽ bắt đầu trình vòng lặp của nó ở số đầu tiên.
Sau mỗi lần mã trong vòng lặp chạy, nó sẽ kiểm tra xem iterator có bằng số sau dấu hai chấm hay không.
Nếu đúng như vậy, quá trình thực thi mã sẽ tiếp tục sau vòng lặp. Nếu không, trình vòng lặp sẽ tăng thêm 1 và khối mã trong ngoặc sẽ chạy lại.
Đối với Vòng lặp trên Mảng, Danh sách và Vectơ
Giống như việc lặp qua một từ điển trong Python, bạn có thể lặp qua các cấu trúc dữ liệu thích hợp trong R bằng cách sử dụng vòng lặp for. Bạn có thể sử dụng bất kỳ cấu trúc dữ liệu có thể lặp lại nào sau từ khóa “in”, thay cho điểm bắt đầu và điểm kết thúc cố định.
Vòng lặp theo cách này sẽ thay đổi hành vi của mã. Ở đây, vòng lặp sẽ hoạt động giống như vòng lặp foreach từ các ngôn ngữ như C#:
employees <- list("Ben", "Jane", "Suzi", "Josh", "Carol")
for (x in employees) {
print(x)
}
Bây giờ, thay vì x giữ phần lặp hiện tại của vòng lặp, nó sẽ giữ đối tượng từ mảng hoặc danh sách mà vòng lặp hiện đang bật. Sau khi hoàn thành mỗi vòng lặp, nếu có nhiều mục hơn trong danh sách, mảng hoặc vectơ, x sẽ được đặt thành mục tiếp theo. Nếu không có nhiều mục hơn, thì quá trình thực thi sẽ tiếp tục với mã sau vòng lặp.
Hàm nguyên thủy c và vòng lặp
Ngoài các cấu trúc dữ liệu đã được điền sẵn, R có thể soạn một cấu trúc mới trong phần khai báo của vòng lặp for. Để làm như vậy, hãy sử dụng hàm c để kết hợp nhiều phần tử thành một vectơ mới.
Bạn có thể đơn giản hóa ví dụ trên bằng phương pháp này:
for (x in c("Ben", "Jane", "Suzi", "Josh", "Carol")) {
print(x)
}
Lưu ý rằng đầu ra vẫn giống như trước đây:
Câu lệnh nhảy của R
Hai câu lệnh cho phép bạn bỏ qua các lần lặp: break và next. Họ thực hiện điều này theo những cách khác nhau. Bạn nên chắc chắn rằng bạn biết sự khác biệt giữa hai.
từ khóa nghỉ giải lao
Khi một vòng lặp gặp câu lệnh break bên trong chính nó, nó sẽ đóng vòng lặp ngay lập tức. Vì chương trình thoát khỏi vòng lặp sau khi chạm vào từ khóa break nên chương trình sẽ không chạy lại bất kỳ đoạn mã nào còn lại:
days <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday",
"Sunday")
for (x in days) {
if (x == "Saturday") {
break
}
print(x)
}
Vòng lặp trên sẽ in ra tất cả các ngày trong tuần, nhưng không in ra ngày cuối tuần.
Từ khóa tiếp theo
Từ khóa next cũng bỏ qua một lần lặp, nhưng không giống như break, next không đóng vòng lặp ngay lập tức. Vòng lặp vẫn mở có nghĩa là bất kỳ mã bổ sung nào trong vòng lặp hiện tại sẽ không chạy, nhưng lần lặp tiếp theo sẽ tiếp tục như kế hoạch:
days <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday",
"Sunday")
for (x in days) {
if (x == "Saturday") {
next
}
print(x)
}
Vòng lặp này sẽ in ra mỗi ngày trong tuần và Chủ Nhật, nhưng nó sẽ không in ra vào Thứ Bảy.
Ví dụ về vòng lặp trong R
Có rất nhiều tình huống mà các vòng lặp for hữu ích trong R. Chúng có thể là một cách tuyệt vời để chạy các phép tính lặp đi lặp lại, chẳng hạn như cộng các số để có tổng:
orders <- list(23.4, 699.8, 1042.0)
total <- 0.0
for (order in orders) {
total <- order + total
}
cat("the total is $", total, "n")
Ví dụ này sẽ thêm tổng số đơn đặt hàng từ mỗi đơn đặt hàng riêng lẻ trong danh sách vào tổng số chung.
Ngoài ra, một vòng lặp for có thể giúp bạn xuất một lượng lớn dữ liệu được định dạng tốt một cách nhanh chóng và dễ dàng:
day_totals <- c(567.82, 364.72, 762.81, 354.99, 622.87)
for (day in 1:length(day_totals)) {
cat("Day #", day, ": $", day_totals[day],"n")
day <- day + 1
}
Bạn có thể sử dụng vòng lặp for để in ra mỗi ngày trong tuần và tổng doanh thu cho ngày cụ thể đó.
Bạn có thể sử dụng vòng lặp for để tính toán kết quả và cung cấp chúng cho mã bên ngoài vòng lặp for, để thu được nhiều thông tin khác nhau:
test_scores <- c(67, 89, 72, 44)
score_total <- 0
num_tests <- 0
for (score in test_scores) {
score_total <- score_total + score
num_tests <- num_tests + 1
}
average_score <- score_total / num_tests
print(average_score)
Vòng lặp trên sẽ tính điểm trung bình mà sinh viên đạt được trong một bài kiểm tra.
Mọi điều bạn cần biết về R’s for Loops
Học cách chạy một số vòng lặp nhất định hoặc lặp lại trên một tập dữ liệu mà không có độ dài cố định là điều cần thiết.
Cho dù bạn cần thực hiện các phép tính lặp lại trên một mảng, in mọi mục trong danh sách hoặc hiển thị một lô dữ liệu lớn ở dạng có thể đọc được, thì vòng lặp for của R có thể giúp ích.
Hiểu các nguyên tắc cơ bản đằng sau vòng lặp for là một kỹ năng quý giá cần có trong kho vũ khí của bạn và việc thành thạo nó có thể giúp bạn viết mã đơn giản, dễ đọc.