Chuyển đến nội dung chính

Vòng lặp for trong R

Khi bạn biết số lần cần lặp lại một thao tác, vòng lặp for là lựa chọn tốt. Nắm vững vòng lặp for với hướng dẫn này.
Đã cập nhật 5 thg 10, 2026  · 5 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity


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.

eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbiIsInNh bXBsZSI6IlxuIyBTZXF1ZW5jZVxuICAgICAgICAgc2VxIDwtIGMoMToxMClc blxuICAgICAgICAgIyBQcmludCBsb29wXG4gICAgICAgICBmb3IgKHZhbHVl IGluIF9fXykge1xuICAgICAgICAgICBwcmludChfX18pXG4gICAgICAgICB9 XG5cbiAgICAgICAgICAjIEEgc3VtIHZhcmlhYmxlXG4gICAgICAgICAgc3Vt IDwtIDBcblxuICAgICAgICAgICMgU3VtIGxvb3BcbiAgICAgICAgICBmb3IgKHZhbHVlIGluIHNlcSkge1xuICAgICAgICAgIHN1bSA8LSBfX18gKyBfX19c biAgICAgICAgICBwcmludChfX18pXG4gICAgICAgICAgfSIsInNvbHV0aW9u IjoiXG4jIFNlcXVlbmNlXG4gICAgICAgICAgc2VxIDwtIGMoMToxMClcblxu ICAgICAgICAgICMgUHJpbnQgbG9vcFxuICAgICAgICAgIGZvciAodmFsdWUg aW4gc2VxKSB7XG4gICAgICAgICAgICAgIHByaW50KHZhbHVlKVxuICAgICAg ICAgIH1cblxuICAgICAgICAgICMgQSBzdW0gdmFyaWFibGVcbiAgICAgICAg ICBzdW0gPC0gMFxuXG4gICAgICAgICAgIyBTdW0gbG9vcFxuICAgICAgICAg IGZvciAodmFsdWUgaW4gc2VxKSB7XG4gICAgICAgICAgICAgIHN1bSA8LSBz dW0gKyB2YWx1ZVxuICAgICAgICAgICAgICBwcmludChzdW0pXG4gICAgICAg ICAgfSIsInNjdCI6IlxudGVzdF9wcmVkZWZpbmVkX29iamVjdHMoXCJzZXFc IilcblxuICAgICAgICAgIHRlc3RfZm9yX2xvb3AoY29uZF90ZXN0ID0gdGVz dF9zdHVkZW50X3R5cGVkKFwidmFsdWUgaW4gc2VxXCIpLFxuICAgICAgICAg ICAgICAgICAgZXhwcl90ZXN0ID0gdGVzdF9mdW5jdGlvbihcInByaW50XCIsIGFyZ3MgPSBcInhcIiksXG4gICAgICAgICAgICAgICAgICBpbmRleCA9IDEp XG5cbiAgICAgICAgICB0ZXN0X2Zvcl9sb29wKGNvbmRfdGVzdCA9IHRlc3Rf c3R1ZGVudF90eXBlZChcInZhbHVlIGluIHNlcVwiKSxcbiAgICAgICAgICAg ICAgICAgICAgICBleHByX3Rlc3QgPSB0ZXN0X2NvcnJlY3QodGVzdF9mdW5j dGlvbihcInByaW50XCIsIGFyZ3MgPSBcInhcIiksIHsgIyBJZiB0aGUgcHJp bnQgc3RhdGVtZW50IGlzIHdyb25nLCB0aGVuIGNoZWNrIHRoZSBhc3NpZ25t ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGVzdF9vcih0ZXN0X3N0dWRlbnRfdHlwZWQoXCJzdW0gKyB2YWx1ZVwiKSwg IyBEaWQgdGhleSBhc3NpZ24gdGhpcyBjb3JyZWN0bHk/XG4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3N0 dWRlbnRfdHlwZWQoXCJ2YWx1ZSArIHN1bVwiKVxuICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAg ICAgICAgICAgaW5kZXggPSAyKVxuXG4gICAgICAgICAgICBzdWNjZXNzX21z ZyhcIkdyZWF0IGpvYiEgTGV0J3Mgc2VlIHdoYXQgZWxzZSB5b3UgY2FuIGRv IHdpdGggZm9yIGxvb3BzLlwiKSIsImhpbnQiOiJcbi0gSW4gdGhlIGZpcnN0 IGxvb3AsIHJlbWVtYmVyIHdoYXQgeW91ciBzZXF1ZW5jZSBzaG91bGQgYmUu XG4gICAgICAgICAgICAgICAgIC0gSW4gdGhlIHNlY29uZCBsb29wLCB5b3Ug aGF2ZSB0byBhZGQgYHZhbHVlYCB0byBgc3VtYCBhbmQgdGhlbiBh c3NpZ24gdGhhdCB2YWx1ZSBiYWNrIHRvIGBzdW1gLiJ9

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:

  • price phải giữ giá ở vòng lặp hiện tại
  • date phải giữ ngày ở vòng lặp hiện tại
  • Lần này, bạn muốn biết liệu apple có vượt 116 hay không.
  • Nếu có, hãy in date và price.
  • Nếu thấp hơn 116, hãy in ra date và in rằng đó không phải ngày quan trọng!
eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbnN0b2Nr IDwtIGRhdGEuZnJhbWUoXG4gICAgICAgICAgICAgIGRhdGUgPSBhcy5EYXRlKGMoXCIyMDE2LTEyLTAxXCIsIFwiMjAxNi0xMi0wMlwiLCBcIjIwMTYtMTIt MDNcIiwgXCIyMDE2LTEyLTA0XCIsIFwiMjAxNi0xMi0wNVwiLCBcIjIwMTYt MTItMDZcIiwgXCIyMDE2LTEyLTA3XCIsXG4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcIjIwMTYtMTItMDhcIiwgXCIyMDE2LTEyLTA5XCIsIFwi MjAxNi0xMi0xMFwiLCBcIjIwMTYtMTItMTFcIiwgXCIyMDE2LTEyLTEyXCIs IFwiMjAxNi0xMi0xM1wiLCBcIjIwMTYtMTItMTRcIixcbiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwiMjAxNi0xMi0xNVwiLCBcIjIwMTYtMTIt MTZcIiwgXCIyMDE2LTEyLTE3XCIsIFwiMjAxNi0xMi0xOFwiLCBcIjIwMTYt MTItMTlcIiwgXCIyMDE2LTEyLTIwXCIsIFwiMjAxNi0xMi0yMVwiLFxuICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDE2LTEyLTIyXCIsIFwi MjAxNi0xMi0yM1wiLCBcIjIwMTYtMTItMjRcIiwgXCIyMDE2LTEyLTI1XCIs IFwiMjAxNi0xMi0yN1wiLCBcIjIwMTYtMTItMjhcIiwgXCIyMDE2LTEyLTI5 XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMTYtMTIt MzBcIikpLFxuXG4gICAgICAgICAgICAgIGFwcGxlID0gYygxMDkuNDksIDEw OS45MCwgTkEsIE5BLCAxMDkuMTEsIDEwOS45NSwgMTExLjAzLCAxMTIuMTIsIDExMy45NSwgTkEsIE5BLC AxMTMuMzAsIDExNS4xOSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDExNS4xOSwgMTE1LjgyLCAxMTUuOTcsIE5BLCBOQSwgMTE2LjY0LCAxMTYuOTUsIDExNy4wNiwgMTE2LjI5LCAxMTYuNTIsIE5BLCBOQSwgMTE3LjI2LFxuICAgICAgICAgICAgICAgICAgICAgICAgMTE2Ljc2LCAxMTYuNzMsIDExNS44MilcbiAgICAgICAgICApXG4gICAgICAgICAgc3RvY2sgPC0gc3Vic2V0KHN0b2NrLCAhaXMubmEoYXBwbGUpKSIsInNhbXBsZSI6IlxuIyBMb29wIG92ZXIgc3RvY2sgcm93c1xuICAgICAgICAgZm9yIChyb3cgaW4gMTpfX18pIHtcbiAgICAgICAgICAgICAgcHJpY2UgPC0gc3RvY2tbX19fLCBcIl9fX1wiXVxuICAgICAgICAgICAgICBkYXRlICA8LSBzdG9ja1tfX18sIFwi X19fXCJdXG5cbiAgICAgICAgICAgICAgaWYoX19fID4gX19fKSB7XG4gICAg ICAgICAgICAgICAgICBwcmludChwYXN0ZShcIk9uXCIsIF9fXyxcbiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwidGhlIHN0b2NrIHByaWNlIHdh c1wiLCBfX18pKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAg ICAgICAgICAgcHJpbnQocGFzdGUoXCJUaGUgZGF0ZTosIF9fXyxcbiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwiaXMgbm90IGFuIGltcG9ydGFu dCBkYXkhXCIpKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9Iiwi c29sdXRpb24iOiJcbiMgTG9vcCBvdmVyIHN0b2NrIHJvd3NcbiAgICAgICAg ICBmb3IgKHJvdyBpbiAxOm5yb3coc3RvY2spKSB7XG4gICAgICAgICAgICAg IHByaWNlIDwtIHN0b2NrW3JvdywgXCJhcHBsZVwiXVxuICAgICAgICAgICAg ICBkYXRlICA8LSBzdG9ja1tyb3csIFwiZGF0ZVwiXVxuXG4gICAgICAgICAg ICAgIGlmKHByaWNlID4gMTE2KSB7XG4gICAgICAgICAgICAgICAgICBwcmlu dChwYXN0ZShcIk9uXCIsIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcInRoZSBzdG9jayBwcmljZSB3YXNcIiwgcHJpY2UpKVxuICAg ICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcHJpbnQo cGFzdGUoXCJUaGUgZGF0ZTpcIiwgZGF0ZSxcbiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwiaXMgbm90IGFuIGltcG9ydGFudCBkYXkhXCIpKVxu ICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9Iiwic2N0IjoiXG50ZXN0 X3ByZWRlZmluZWRfb2JqZWN0cyhcInN0b2NrXCIpXG5cbiAgICAgICAgICB0 ZXN0X2Zvcl9sb29wKGNvbmRfdGVzdCA9IHRlc3Rfc3R1ZGVudF90eXBlZChc InJvdyBpbiAxOm5yb3coc3RvY2spXCIpLFxuICAgICAgICAgICAgICAgICAg ICAgICAgZXhwcl90ZXN0ID0gdGVzdF9pZl9lbHNlKGlmX2NvbmRfdGVzdCAg ID0gdGVzdF9zdHVkZW50X3R5cGVkKFwicHJpY2UgPiAxMTZcIiksXG4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp Zl9leHByX3Rlc3QgICA9IHRlc3RfZnVuY3Rpb24oXCJwcmludFwiLCBhcmdz ID0gXCJ4XCIsIGluY29ycmVjdF9tc2cgPSBcIlRoZSBwcmludCBzdGF0ZW1l bnQgb3V0cHV0IGlzIGluY29ycmVjdCwgYXJlIGBkYXRlYCBhbmQgYHByaWNl YCBkZWZpbmVkIGNvcnJlY3RseT9cIiksXG5cbiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VfZXhwcl90ZXN0 ID0gdGVzdF9mdW5jdGlvbihcInByaW50XCIsIGFyZ3MgPSBcInhcIikpXG4g ICAgICAgICAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICBzdWNjZXNz X21zZyhcIk5pY2Ugam9iIVwiKSIsImhpbnQiOiJcbi0gVGhlIGJsYW5rcyB5 b3UgZmlsbCBpbiBzaG91bGQgYmUgc2ltaWxhciB0byB0aGUgZXhhbXBsZS5c biAgICAgICAgICAgICAgICAtIEZvciB0aGUgZWxzZSBzdGF0ZW1lbnQgYmxh bmtzLCB5b3UgbmVlZCB0byBzZWxlY3QgdGhlIGBkYXRlYCBmb3IgdGhlIGN1 cnJlbnQgcm93LiJ9

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 row của corr.
    • Vòng lặp trong phải lặp qua các col của corr.
    • 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.
eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbnN0b2Nr cyA8LSBjKFwiYXBwbGVcIiwgXCJpYm1cIiwgXCJtaWNyXCIpXG4gICAgICAg IGNvcnIgPC0gbWF0cml4KGMoMSwgLjk2LCAuODgsIC45NiwgMSwgLjc0LCAu ODgsIC43NCwgMSksIG5yb3c9MylcblxuICAgICAgICBjb2xuYW1lcyhjb3Jy KSA8LSBzdG9ja3NcbiAgICAgICAgcm93bmFtZXMoY29ycikgPC0gc3RvY2tz Iiwic2FtcGxlIjoiXG4gICMgUHJpbnQgb3V0IGNvcnJcblxuXG4gICAgICAg ICMgQ3JlYXRlIGEgbmVzdGVkIGxvb3BcbiAgICAgICAgZm9yKHJvdyBpbiAx Om5yb3coX19fKSkge1xuICAgICAgICAgICAgZm9yKGNvbCBpbiAxOl9fXyhj b3JyKSkge1xuICAgICAgICAgICAgICAgIHByaW50KHBhc3RlKGNvbG5hbWVz KGNvcnIpW19fX10sIFwiYW5kXCIsIHJvd25hbWVzKGNvcnIpW19fX10sXG4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoYXZlIGEgY29ycmVsYXRp b24gb2ZcIiwgY29ycltyb3csY29sXSkpXG4gICAgICAgICAgICB9XG4gICAg ICAgIH0iLCJzb2x1dGlvbiI6IlxuICAjIFByaW50IG91dCBjb3JyXG4gICAg ICAgICAgY29yclxuXG4gICAgICAgICAgIyBDcmVhdGUgYSBuZXN0ZWQgbG9v cFxuICAgICAgICAgIGZvcihyb3cgaW4gMTpucm93KGNvcnIpKSB7XG4gICAg ICAgICAgICAgIGZvcihjb2wgaW4gMTpuY29sKGNvcnIpKSB7XG4gICAgICAg ICAgICAgICAgICBwcmludChwYXN0ZShjb2xuYW1lcyhjb3JyKVtjb2xdLCBc ImFuZFwiLCByb3duYW1lcyhjb3JyKVtyb3ddLFxuICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXCJoYXZlIGEgY29ycmVsYXRpb24gb2ZcIiwgY29y cltyb3csY29sXSkpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9Iiwi c2N0IjoiXG50ZXN0X2Zvcl9sb29wKGNvbmRfdGVzdCA9IHRlc3Rfc3R1ZGVu dF90eXBlZChcInJvdyBpbiAxOm5yb3coY29ycilcIiksXG4gICAgICAgICAg ICAgICAgICAgICAgICBleHByX3Rlc3QgPSB0ZXN0X2Zvcl9sb29wKGNvbmRf dGVzdCAgID0gdGVzdF9zdHVkZW50X3R5cGVkKFwiY29sIGluIDE6bmNvbChj b3JyKVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXhwcl90ZXN0ICAgPSB0ZXN0X2Z1bmN0aW9uKFwi cHJpbnRcIiwgYXJncyA9IFwieFwiLCBpbmNvcnJlY3RfbXNnID0gXCJUaGUg cHJpbnQgc3RhdGVtZW50IG91dHB1dCBpcyBpbmNvcnJlY3QsIGRpZCB5b3Ug ZmlsbCBpbiBgY29sYCBhbmQgYHJvd2AgZm9yIHRoZSBibGFua3M/XCIpXG4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcblxuICAgICAgICAg ICBzdWNjZXNzX21zZyhcIk5pY2UhIFRoYXQgd2FzIGEgdG91Z2ggb25lLiBO ZXN0ZWQgbG9vcHMgcmVxdWlyZSBhIGxvdCBvZiBjb21wdXRhdGlvbmFsIGVu ZXJneSwgYmVjYXVzZSBzbyBtYW55IGNhbGN1bGF0aW9ucyBhcmUgcmVxdWly ZWQuXCIpIiwiaGludCI6IlxuICAtIERvbid0IGZvcmdldCB0byB1c2UgdGhl IGBucm93KClgIGFuZCBgbmNvbCgpYCBmdW5jdGlvbnMgaW4geW91ciBsb29w LlxuICAgICAgICAgICAgICAgICAgLSBUaGUgY29kZSB1c2VkIHRvIGNyZWF0 ZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBsb29wIHNob3VsZCBiZSB0aGUgc2Ft ZSBhcyB0aGUgZXhhbXBsZS4ifQ==

Hãy xem thêm Hướng dẫn về vòng lặp trong R của chúng tôi.

Chủ đề
R
Khoa học Dữ liệu

Tìm hiểu thêm về R

Khóa học

R nâng cao

6 giờ
679.6K
Tiếp tục hành trình trở thành một chuyên gia R bằng cách tìm hiểu về các câu lệnh điều kiện, vòng lặp và hàm vectơ.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm