Chuyển data frame thành matrix
Một phần mã mà profvis làm nổi bật là dòng chúng ta tạo ra các lần tung xúc xắc và lưu kết quả vào một data frame:
df <- data.frame(d1 = sample(1:6, 3, replace = TRUE),
d2 = sample(1:6, 3, replace = TRUE))
Ta có thể tối ưu đoạn mã này bằng hai cải tiến:
- Chuyển từ data frame sang matrix
- Tạo cả 6 lần tung xúc xắc chỉ trong một bước
Khi đó ta có
m <- matrix(sample(1:6, 6, replace = TRUE), ncol = 2)
Bài tập này là một phần của khóa học
Viết mã R hiệu quả
Hướng dẫn bài tập
- Đọc và hiểu lời giải dùng data frame
d(). - Hoàn thiện lời giải dùng matrix,
m().m()nên tạo mộtmatrixcó 6 phần tử và 2 cột.
- Dùng hàm
microbenchmark()để so sánh thời gian chạy củad()vàm().
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.
# Load the microbenchmark package
___
# The previous data frame solution is defined
# d() Simulates 6 dices rolls
d <- function() {
data.frame(
d1 = sample(1:6, 3, replace = TRUE),
d2 = sample(1:6, 3, replace = TRUE)
)
}
# Complete the matrix solution
m <- function() {
___(sample(1:6, ___, replace = TRUE), ___)
}
# Use microbenchmark to time m() and d()
___(
data.frame_solution = d(),
matrix_solution = ___
)