НачатьНачать бесплатно

Замена фрейма данных на матрицу

Среди фрагментов кода, на которые обратил внимание 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() должна создавать matrix с 6 элементами и 2 столбцами.
  • Используйте функцию 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     = ___
)
Редактировать и запускать код