Khóa học
Nắm vững vòng lặp for và các hàm R thiết yếu khác với khóa học nhập môn R của chúng tôi.
Lặp qua một Vector
Khi bạn biết số lần muốn lặp lại một thao tác, vòng lặp for là lựa chọn tốt. Ý tưởng của vòng lặp for là bạn đi qua một dãy giá trị, từng phần tử một, và thực hiện một hành động ở mỗi bước. Dãy đó thường là một vector số (chẳng hạn dãy từ 1:10), nhưng cũng có thể là các số không theo thứ tự như c(2, 5, 4, 6), hoặc thậm chí là một dãy ký tự!
for (value in sequence) {
code
}
Nói cách khác, “với mỗi giá trị trong dãy của tôi, hãy chạy đoạn mã này.” Ví dụ có thể là, “với mỗi hàng trong data frame của tôi, in cột 1”, hoặc “với mỗi từ trong câu của tôi, kiểm tra xem từ đó có phải là DataCamp không.”
Hãy thử một ví dụ! Đầu tiên, bạn sẽ tạo một vòng lặp in ra các giá trị trong dãy từ 1 đến 10. Sau đó, bạn sẽ chỉnh vòng lặp đó để đồng thời tính tổng các giá trị từ 1 đến 10, trong đó ở mỗi vòng lặp, giá trị kế tiếp trong dãy được cộng vào tổng đang chạy.
Hướng dẫn
Một vector seq đã được tạo sẵn cho bạn. Điền vào vòng lặp for, sử dụng seq làm dãy của bạn. In ra value ở mỗi vòng lặp. Một biến sum đã được tạo sẵn. Dùng vòng lặp để cộng các số trong seq. Mỗi vòng lặp, value sẽ được cộng vào sum, sau đó in ra sum.
Nếu bạn thấy ổn thì tiếp tục sang bài tập tiếp theo! Nếu chưa, đây là một video tổng quan.
Video tổng quan về vòng lặp for trong R
Lặp qua các hàng của Data Frame
Hãy tưởng tượng bạn quan tâm đến những ngày giá cổ phiếu Apple tăng vượt 117. Nếu vượt ngưỡng này, bạn muốn in ra ngày hiện tại và giá cổ phiếu. Nếu bạn có một data frame stock với cột date và giá apple, bạn có thể lặp qua các hàng của data frame để làm điều này không? Chắc chắn là có!
Trước khi làm, lưu ý rằng bạn có thể lấy số hàng trong data frame bằng nrow(stock). Sau đó, bạn có thể tạo một dãy để lặp từ 1:nrow(stock).
for (row in 1:nrow(stock)) {
price <- stock[row, "apple"]
date <- stock[row, "date"]
if(price > 117) {
print(paste("On", date,
"the stock price was", price))
}
}
[1] "On 2016-12-21 the stock price was 117.06"
[1] "On 2016-12-27 the stock price was 117.26"
Đoạn này kết hợp nhiều kiến thức chúng ta đã học. Câu lệnh if, lấy tập con của vector, điều kiện và vòng lặp! Chúc mừng bạn đã học được thật nhiều!
Hướng dẫn
stock đã có trong không gian làm việc của bạn.
Điền vào chỗ trống trong vòng lặp for để đảm bảo các điều sau đúng:
pricephải giữ giá ở vòng lặp hiện tạidatephải giữ ngày ở vòng lặp hiện tại- Lần này, bạn muốn biết liệu
applecó vượt116hay không. - Nếu có, hãy in
datevàprice. - Nếu thấp hơn
116, hãy in radatevà in rằng đó không phải ngày quan trọng!
Lặp qua các phần tử của ma trận
Đến giờ, bạn đã lặp trên các kiểu dữ liệu một chiều. Nếu muốn lặp qua các phần tử trong một ma trận (cột và hàng), bạn sẽ phải dùng vòng lặp lồng nhau. Bạn sẽ dùng ý tưởng này để in ra hệ số tương quan giữa ba cổ phiếu.
Cách dễ hình dung nhất là bạn sẽ bắt đầu ở hàng 1, và di chuyển sang phải, đi qua cột 1, cột 2, ..., cho đến cột cuối cùng của hàng 1. Sau đó, bạn di chuyển xuống hàng 2 và lặp lại quy trình.
my_matrix
[,1] [,2]
[1,] "r1c1" "r1c2"
[2,] "r2c1" "r2c2"
# Loop over my_matrix
for(row in 1:nrow(my_matrix)) {
for(col in 1:ncol(my_matrix)) {
print(my_matrix[row, col])
}
}
[1] "r1c1"
[1] "r1c2"
[1] "r2c1"
[1] "r2c2"
Hướng dẫn
Ma trận tương quan, corr, đã có trong không gian làm việc của bạn.
- In
corrđể xem nhanh dữ liệu. - Điền vào vòng lặp lồng nhau! Nó cần đáp ứng các điều sau:
- Vòng lặp ngoài phải lặp qua các
rowcủacorr. - Vòng lặp trong phải lặp qua các
colcủacorr. - Câu lệnh in phải in tên của cột và hàng hiện tại, đồng thời in cả hệ số tương quan của chúng.
- Vòng lặp ngoài phải lặp qua các
Hãy xem thêm Hướng dẫn về vòng lặp trong R của chúng tôi.