Không thể đơn giản hóa
Khi dùng tương tác, sapply() rất hữu ích. Hàm này đoán kiểu đầu ra để có thể đơn giản hóa, và thường thì điều đó ổn. Tuy nhiên, sapply() không phải lựa chọn an toàn khi bạn viết hàm. Nếu sapply() không thể đơn giản hóa đầu ra, nó sẽ mặc định trả về một list giống như lapply(). Điều này có thể nguy hiểm và làm hỏng các hàm tự viết nếu bạn kỳ vọng sapply() trả về một vector đã được đơn giản hóa.
Hãy xem một bài tập với một list chứa thông tin về cú sụp đổ thị trường chứng khoán năm 2008.
Bài tập này là một phần của khóa học
R trung cấp cho Tài chính
Hướng dẫn bài tập
List market_crash đã được tạo sẵn cho bạn.
- Dùng
sapply()để lấyclass()của từng phần tử trongmarket_crash.
Một list mới, market_crash2, đã được tạo. Khác biệt nằm ở cách tạo ngày!
- Dùng
lapply()để lấyclass()của từng phần tử trongmarket_crash2. - Dùng
sapply()để lấyclass()của từng phần tử trongmarket_crash2.
date trong market_crash2 có nhiều class. Tại sao sapply() không thể đơn giản hóa trong trường hợp này?
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Market crash with as.Date()
market_crash <- list(dow_jones_drop = 777.68,
date = as.Date("2008-09-28"))
# Find the classes with sapply()
___
# Market crash with as.POSIXct()
market_crash2 <- list(dow_jones_drop = 777.68,
date = as.POSIXct("2008-09-28"))
# Find the classes with lapply()
___
# Find the classes with sapply()
___