R Cho vòng lặp
Đối với các vòng lặp
Một for
vòng lặp được sử dụng để lặp qua một trình tự:
Thí dụ
for (x in 1:10) {
print(x)
}
Từ khóa này ít giống for
từ khóa trong các ngôn ngữ lập trình khác và hoạt động giống như một phương thức trình vòng lặp như được tìm thấy trong các ngôn ngữ lập trình hướng đối tượng khác.
Với for
vòng lặp, chúng ta có thể thực hiện một tập hợp các câu lệnh, một lần cho mỗi mục trong một vectơ, mảng, danh sách, v.v.
Thí dụ
In mọi mục trong danh sách:
fruits <- list("apple", "banana", "cherry")
for (x in fruits) {
print(x)
}
Thí dụ
In số lượng xúc xắc:
dice <- c(1, 2, 3, 4, 5, 6)
for (x in dice) {
print(x)
}
Vòng for
lặp không yêu cầu phải đặt trước biến lập chỉ mục, giống như với while
các vòng lặp.
Nghỉ
Với break
câu lệnh, chúng ta có thể dừng vòng lặp trước khi nó lặp lại qua tất cả các mục:
Thí dụ
Dừng vòng lặp tại "cherry":
fruits <- list("apple", "banana", "cherry")
for (x in fruits) {
if (x == "cherry") {
break
}
print(x)
}
Vòng lặp sẽ dừng lại ở "cherry" vì chúng ta đã chọn kết thúc vòng lặp bằng cách sử dụng break
câu lệnh when
x
bằng "cherry" ( x ==
"cherry"
).
Kế tiếp
Với next
câu lệnh, chúng ta có thể bỏ qua một lần lặp mà không kết thúc vòng lặp:
Thí dụ
Bỏ qua "chuối":
fruits <- list("apple", "banana", "cherry")
for (x in fruits) {
if (x == "banana") {
next
}
print(x)
}
Khi vòng lặp vượt qua "banana", nó sẽ bỏ qua và tiếp tục lặp.
Yahtzee!
Nếu .. Khác Kết hợp với Vòng lặp Cho
Để chứng minh một ví dụ thực tế, hãy giả sử chúng tôi chơi trò chơi Yahtzee!
Thí dụ
In "Yahtzee!" Nếu số xúc xắc là 6:
dice <- 1:6
for(x in dice) {
if (x == 6) {
print(paste("The dice number is", x, "Yahtzee!"))
} else {
print(paste("The dice number is", x, "Not Yahtzee"))
}
}
Nếu vòng lặp đạt đến các giá trị từ 1 đến 5, nó sẽ in ra "No Yahtzee" và số của nó. Khi nó đạt đến giá trị 6, nó sẽ in "Yahtzee!" và số của nó.
Vòng lồng nhau
Bạn cũng có thể có một vòng lặp bên trong một vòng lặp:
Thí dụ
In tính từ của từng loại trái cây trong danh sách:
adj <- list("red", "big", "tasty")
fruits <- list("apple", "banana",
"cherry")
for (x in adj) {
for (y in fruits) {
print(paste(x, y))
}
}