将数据框改为矩阵
profvis 标出的瓶颈之一,是我们生成所有可能的骰子点数并把结果存入数据框的这一行代码:
df <- data.frame(d1 = sample(1:6, 3, replace = TRUE),
d2 = sample(1:6, 3, replace = TRUE))
我们可以通过两点改进来优化这段代码:
- 将数据结构从数据框切换为矩阵
- 在一步中生成 6 次掷骰结果
这样就得到:
m <- matrix(sample(1:6, 6, replace = TRUE), ncol = 2)
本练习是课程的一部分
高效 R 代码写作
练习说明
- 阅读并理解数据框解法
d()。 - 完成矩阵解法
m()。m()应创建一个包含 6 个元素、2 列的matrix。
- 使用
microbenchmark()函数对d()和m()的运行时间进行比较。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# 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 = ___
)