lapply() trên data frame
Nếu thay vì một list, bạn có một data frame các lợi nhuận cổ phiếu, bạn vẫn có thể dùng lapply() chứ? Có! Nghe có vẻ bất ngờ, nhưng data frame thực chất là các list ở bên dưới, và một lời gọi lapply() sẽ áp dụng hàm lên từng cột của data frame.
df
a b
1 1 4
2 2 6
class(df)
[1] "data.frame"
lapply(df, FUN = sum)
$a
[1] 3
$b
[1] 10
lapply() đã tính tổng từng cột trong data frame, nhưng vẫn theo quy ước luôn trả về một list. Một data frame lợi nhuận cổ phiếu theo ngày dưới dạng số thập phân có tên stock_return đã được cung cấp.
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
- In
stock_returnđể xem data frame. - Dùng
lapply()để lấy giá trị trung bình (mean) của từng cột. - Tạo một hàm cho sharpe ratio. Hàm này sẽ lấy trung bình lợi nhuận, trừ đi lãi suất phi rủi ro (
.03%), rồi chia cho độ lệch chuẩn của lợi nhuận. - Dùng
lapply()để tính sharpe ratio cho từng cột.
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.
# Print stock_return
___
# lapply to get the average returns
___
# Sharpe ratio
sharpe <- function(returns) {
(___ - .0003) / ___
}
# lapply to get the sharpe ratio
___