Các từ dùng để chỉ “vòng lặp”: “looping”, “cycling” và “iterating”
forLặp lại công việc với từng phần tử của một tập hợp
In các số nguyên từ 1 tới 5
for (i in 1:5) print(i)
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
Gọi các phần tử của vector bằng số index
trai_cay <- c("cam", "xoai", "quyt", "na")
for (i in 1:length(trai_cay)) {
print(trai_cay[i])
}
## [1] "cam"
## [1] "xoai"
## [1] "quyt"
## [1] "na"
…hoặc gọi đích danh :))
trai_cay <- c("cam", "xoai", "quyt", "na")
for (trai in trai_cay) {
print(trai)
}
## [1] "cam"
## [1] "xoai"
## [1] "quyt"
## [1] "na"
Vòng lặp lồng trong vòng lặp (nested loop)
# chỉ dùng để minh hoạ, vẫn có cách khác tiện hơn
nucleotides <- c("A", "C", "G", "T")
for (first_nt in nucleotides) {
for (second_nt in nucleotides) {
for (third_nt in nucleotides) {
print(paste(first_nt, second_nt, third_nt, sep = ""))
}
}
}
## [1] "AAA"
## [1] "AAC"
## [1] "AAG"
## [1] "AAT"
## [1] "ACA"
## [1] "ACC"
## [1] "ACG"
## [1] "ACT"
## [1] "AGA"
## [1] "AGC"
## [1] "AGG"
## [1] "AGT"
## [1] "ATA"
## [1] "ATC"
## [1] "ATG"
## [1] "ATT"
## [1] "CAA"
## [1] "CAC"
## [1] "CAG"
## [1] "CAT"
## [1] "CCA"
## [1] "CCC"
## [1] "CCG"
## [1] "CCT"
## [1] "CGA"
## [1] "CGC"
## [1] "CGG"
## [1] "CGT"
## [1] "CTA"
## [1] "CTC"
## [1] "CTG"
## [1] "CTT"
## [1] "GAA"
## [1] "GAC"
## [1] "GAG"
## [1] "GAT"
## [1] "GCA"
## [1] "GCC"
## [1] "GCG"
## [1] "GCT"
## [1] "GGA"
## [1] "GGC"
## [1] "GGG"
## [1] "GGT"
## [1] "GTA"
## [1] "GTC"
## [1] "GTG"
## [1] "GTT"
## [1] "TAA"
## [1] "TAC"
## [1] "TAG"
## [1] "TAT"
## [1] "TCA"
## [1] "TCC"
## [1] "TCG"
## [1] "TCT"
## [1] "TGA"
## [1] "TGC"
## [1] "TGG"
## [1] "TGT"
## [1] "TTA"
## [1] "TTC"
## [1] "TTG"
## [1] "TTT"
whileVòng lặp while tiếp tục chạy khi điều kiện vẫn còn đúng.
count <- 0
while (count < 6){
print(count)
count <- count + 1
}
## [1] 0
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
repeatVòng lặp repeat dừng khi tín hiệu dừng được thoã mãn
i <- 0
repeat{
i <- i + 1
print(i)
if (i>5) break
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
Biến đếm được dùng rất phổ biến trong các vòng lặp.
Biến đếm phải được khai báo TRƯỚC khi bắt đầu vòng lặp.
count <- 0
while (count < 6){
print(count)
count <- count + 1
}
while (z < 6){
print(z)
z <- z + 1
}
## Error in eval(expr, envir, enclos): object 'z' not found
break và nextMột “vòng lặp” có nhiều “lần lặp”.
break: thoát hẵn khỏi VÒNG lặp, thực hiện các lệnh tiếp theo.
for (i in 1:6){
if (i == 4){
break
}
print(i)
}
## [1] 1
## [1] 2
## [1] 3
next: thoát khỏi lần LẦN lặp hiện tại, đi tới lần lặp kế tiếp nhưng KHÔNG thoát khỏi VÒNG lặp.
for (i in 1:6){
if (i == 4){
next
}
print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 5
## [1] 6