Giao diện
Module 2: Lists & Subsetting 📦
📝 Stats
- Số lượng: 10 câu hỏi
- Độ khó: Trung bình
- Mục tiêu: Phân biệt được toa tàu (List) và hàng hóa (Element).
MCQ
Q1. Sự khác biệt chính giữa Atomic Vector và List là gì?
- [ ] List có tên, Vector không có tên.
- [ ] List có thể chứa các phần tử khác kiểu nhau (Heterogeneous), Vector thì không.
- [ ] Vector nhanh hơn List.
- [ ] List là 2D, Vector là 1D.
Đáp án: List có thể chứa các phần tử khác kiểu nhau.
Q2. Cho x <- list(a = 1:3, b = "hello"). Lệnh x[1] trả về kiểu dữ liệu gì?
- [ ] Integer Vector
- [ ] List
- [ ] Character
- [ ] NULL
Đáp án: List. Giải thích:
[luôn trả về cùng kiểu với object gốc (List trả về List con).
Q3. Cũng list trên, lệnh x[[1]] trả về kiểu dữ liệu gì?
- [ ] Integer Vector
- [ ] List
- [ ] Character
- [ ] NULL
Đáp án: Integer Vector. Giải thích:
[[moi ruột container ra lấy nội dung.
Q4. Để truy cập phần tử "hello", lệnh nào sau đây SAI?
- [ ]
x[[2]] - [ ]
x$b - [ ]
x[["b"]] - [ ]
x[2]
Đáp án:
x[2]. Giải thích:x[2]trả về một List chứa chuỗi "hello", chứ không phải bản thân chuỗi "hello".
Coding Challenge
Challenge 1: The JSON Parser Simulation
Giả sử bạn nhận được output từ API dưới dạng List lồng nhau (Nested List):
r
api_response <- list(
status = "ok",
data = list(
users = list(
list(id = 1, name = "Tom"),
list(id = 2, name = "Jerry")
)
)
)Hãy viết lệnh để lấy ra chữ "Jerry".
r
# Code:
# Cách 1 (Dùng $):
api_response$data$users[[2]]$name
# Cách 2 (Dùng [[):
api_response[["data"]][["users"]][[2]][["name"]]