开始使用免费开始使用

将数据框改为矩阵

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     = ___
)
编辑并运行代码