Замена фрейма данных на матрицу
Среди фрагментов кода, на которые обратил внимание 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 = ___
)