Skip to content

Module 3: Control Flow 🔀

📝 Stats

  • Số lượng: 10 câu hỏi
  • Độ khó: Khó (Về tư duy Vectorization)

MCQ

Q1. Hàm nào dùng để vector hóa biểu thức if-else?

  • [ ] if_else() (dplyr) hoặc ifelse() (base)
  • [ ] case_when()
  • [ ] switch()
  • [ ] Cả A và B

Đáp án: Cả A và B. (Nhưng để thuần túy thay thế if-else đơn giản thì ifelse là chuẩn nhất).

Q2. Tại sao vòng lặp for trong R thường bị chê chậm?

  • [ ] Bản chất for chậm.
  • [ ] Do người dùng không pre-allocate bộ nhớ (copy-on-modify).
  • [ ] Do R là ngôn ngữ thông dịch.
  • [ ] Do vòng lặp không dùng được trên GPU.

Đáp án: Do người dùng không pre-allocate bộ nhớ. Giải thích: Nếu pre-allocate đúng, for loop trong R không chậm hơn quá nhiều so với ngôn ngữ khác.


Coding Challenge

Challenge: Vectorization vs Loop

Viết một đoạn code tính tổng bình phương các số chẵn từ 1 đến 1,000,000. Yêu cầu: KHÔNG dùng vòng lặp for.

r
# Input
x <- 1:1000000

# Logic Vectorized (Fast)
# 1. Lọc số chẵn: x[x %% 2 == 0]
# 2. Bình phương: ^2
# 3. Tổng: sum()

result <- sum(x[x %% 2 == 0]^2)