Замер времени — наращивание вектора
Наращивание вектора — одна из главных ошибок в R, которую следует всегда избегать.
Функция growing(), определённая ниже, генерирует n случайных чисел из стандартного нормального распределения, но при этом увеличивает размер вектора каждый раз, когда добавляется новый элемент!
Примечание: Стандартное нормальное распределение — это нормальное распределение со средним значением 0 и стандартным отклонением 1.
n <- 30000
# Slow code
growing <- function(n) {
x <- NULL
for(i in 1:n)
x <- c(x, rnorm(1))
x
}
Это упражнение является частью курса
Эффективный код на R
Инструкции к упражнению
Функция growing() уже определена в вашем рабочем пространстве.
- С помощью функции
system.time()определите, сколько времени требуется для генерацииn = 30000случайных чисел из стандартного нормального распределения с использованием функцииgrowing(). Используйте приём с<-, чтобы сохранить результат в вектор с именемres_grow.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Use <- with system.time() to store the result as res_grow
system.time(___ <- ___)