Giao diện
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ặcifelse()(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ì
ifelselà 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
forchậ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,
forloop 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)