Giao diện
Module 1: Vectors & Types 🧬
📝 Stats
- Số lượng: 12 câu hỏi
- Độ khó: Dễ -> Trung bình
- Mục tiêu: Nắm vững quy tắc Recycling và Coercion.
Multiple Choice (MCQ)
Q1. Kết quả của typeof(c(1L, 2.5)) là gì?
- [ ]
integer - [ ]
double - [ ]
character - [ ]
list
Đáp án:
double. Giải thích: R ép kiểu theo hướng linh hoạt hơn. 2.5 là double, nên 1L (integer) bị ép thành 1.0 (double).
Q2. Luật "Coercion Hierarchy" nào sau đây là đúng (từ ít linh hoạt nhất đến linh hoạt nhất)?
- [ ] Logical < Integer < Double < Character
- [ ] Integer < Logical < Double < Character
- [ ] Character < Double < Integer < Logical
- [ ] Double < Integer < Logical < Character
Đáp án:
Logical < Integer < Double < Character.
Q3. Kết quả của c(TRUE, "FALSE") là gì?
- [ ]
c(TRUE, FALSE)(Logical) - [ ]
c("TRUE", "FALSE")(Character) - [ ] Lỗi (Error)
- [ ]
c(1, 0)(Numeric)
Đáp án:
c("TRUE", "FALSE"). Giải thích: Character (chuỗi) "nuốt chửng" mọi thứ. TRUE bị ép thành chuỗi "TRUE".
Q4. Vector x <- 1:3. Lệnh x[5] trả về gì?
- [ ] Error: Index out of bounds
- [ ]
0 - [ ]
NULL - [ ]
NA
Đáp án:
NA. Giải thích: Khác với Python (báo lỗi), R trả vềNAkhi truy cập index ngoài phạm vi. Hãy cẩn thận!
Q5. (Tricky) Kết quả của 1:4 + 1:3 là gì?
- [ ]
2 4 6 5 - [ ]
2 4 6 NA - [ ] Error
- [ ] Warning: longer object length is not a multiple of shorter object length
Đáp án: Warning... (nhưng vẫn trả về kết quả
2 4 6 5). Giải thích: R thực hiện recycling. 1:3 lặp lại -> 1, 2, 3, 1. Vector dài (4) không chia hết cho vector ngắn (3) nên R cảnh báo.
Coding Challenge
Challenge 1: The Cleaner
Bạn nhận được một vector dữ liệu bẩn từ file Excel: raw_data <- c("100", "200", "Missing", "300", "N/A")
Hãy viết code để:
- Chuyển nó thành Numeric vector.
- Các giá trị không phải số phải thành
NAthực sự. - Tính trung bình cộng (bỏ qua NA).
r
raw_data <- c("100", "200", "Missing", "300", "N/A")
# Code của bạn:
clean_data <- as.numeric(raw_data)
# Warning: NAs introduced by coercion (Điều này là mong muốn!)
avg <- mean(clean_data, na.rm = TRUE)
print(avg) # 200