Menu
CoddyTech

Lặp qua các phần tử của vector

Thuộc phần Kiến thức nền tảng trong hành trình R của Coddy. Bài học 63 trên 78.

Dù các phép toán vector hóa của R rất mạnh mẽ, đôi khi bạn cần xử lý từng phần tử bằng logic tùy chỉnh. Vòng lặp for cho phép bạn lần lượt duyệt qua từng phần tử trong mảng.

Cách đơn giản nhất để lặp qua một vector là duyệt trực tiếp qua các phần tử của nó:

fruits <- c("apple", "banana", "cherry")
for (fruit in fruits) {
  print(fruit)
}

Đầu ra:

[1] "apple"
[1] "banana"
[1] "cherry"

Trong mỗi lần lặp, biến vòng lặp fruit nhận giá trị của phần tử tiếp theo trong vector. Cách này gọn gàng và dễ đọc khi bạn chỉ cần các giá trị.

Bạn có thể kết hợp lần lặp với logic điều kiện để xử lý có chọn lọc các phần tử:

numbers <- c(3, 8, 2, 10, 5)
for (num in numbers) {
  if (num > 5) {
    print(num)
  }
}

Đầu ra:

[1] 8
[1] 10

Mẫu này hữu ích khi bạn cần áp dụng các thao tác khác nhau dựa trên giá trị của từng phần tử, điều mà chỉ các thao tác vector hóa không phải lúc nào cũng xử lý được.

challenge icon

Thử thách

Dễ

Bạn sẽ nhận hai dòng đầu vào:

  1. Một danh sách số được phân tách bằng dấu phẩy (ví dụ: 12,5,18,3,25,8,14)
  2. Một giá trị ngưỡng (ví dụ: 10)

Dùng vòng lặp for để lặp qua các phần tử của vector:

  1. Tạo một vector từ các số được phân tách bằng dấu phẩy
  2. Lặp qua từng phần tử trong vector
  3. Với mỗi phần tử lớn hơn hoặc bằng ngưỡng, in ra phần tử đó bằng print()

Ví dụ, nếu đầu vào là:

4,15,8,22,6,19,11
10

Đầu ra cần là:

[1] 15
[1] 22
[1] 19
[1] 11

Giải thích: Vòng lặp so sánh từng phần tử với ngưỡng (10). Các phần tử 15, 22, 19 và 11 đều lớn hơn hoặc bằng 10, nên chúng được in ra. Các phần tử 4, 8 và 6 bị bỏ qua.

Tự làm thử

# Đọc đầu vào
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
threshold <- as.numeric(suppressWarnings(readLines(con, n = 1)))
close(con)

# Chuyển chuỗi phân tách bằng dấu phẩy thành vectơ số
numbers <- as.numeric(unlist(strsplit(numbers_input, ",")))

# TODO: Viết code bên dưới
# Dùng vòng lặp for để duyệt vectơ numbers
# Với mỗi phần tử >= threshold, in ra bằng print()
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch R online