rep() в R: расшифровка функции репликации

Опубликовано: 2020-06-15

Прежде чем говорить о rep в R , мы должны знать, что такое итерация. Термин итерация означает повторение. Как и в большинстве других языков программирования, традиционные циклы или итерации являются ключевым аспектом R.

Хотя регулярные циклы являются эффективным подходом к управлению данными, они являются дорогостоящими по той единственной причине, что итерация занимает много памяти и времени. Хорошей альтернативой является использование векторизованных методов, которые могут достигать тех же целей, что и итерация; функция rep() является членом одной из таких векторизованных циклических функций.

Оглавление

Что такое функция rep()?

Проще говоря, rep в R или функция rep() реплицирует числовые значения, текст или значения вектора определенное количество раз. Функция rep() входит в семейство функций apply() базового пакета R. Семейство apply() содержит функции, используемые для многократного управления данными из массивов, матриц, фреймов данных и списков.

Функции apply() избегают использования конструкций цикла для работы с массивами, матрицами или входными списками и применяют именованную функцию с необязательными аргументами. Вызываемая функция может быть функцией агрегирования, функцией преобразования или векторизованными функциями, такими как массивы, векторы, списки и матрицы. Ознакомьтесь с нашими курсами по науке о данных, чтобы узнать больше о функциях.

Подробнее: Фреймы данных в Python: подробное руководство по Python

Векторизованные вычисления по сравнению с итерациями

Вместо того, чтобы работать с отдельными элементами последовательности, векторизованные методы работают со всеми компонентами вектора одновременно. Таким образом, векторизованные вычисления всегда дают более быстрые результаты.

Чтобы проиллюстрировать скорость векторизованных вычислений, мы будем использовать пример, который определяет время, затраченное циклом for() для генерации большого вектора. В примере каждый элемент вычисляется последовательно как возрастающая кумулятивная сумма от 1 до N (где N = 10 000 000). Проведено сравнение между итерацией цикла for() и векторизованной функцией с помощью тестов скорости.

Источник

При сравнении результатов тестов скорости видно, что время, затраченное на векторизованный расчет (тест скорости 2), значительно быстрее, чем цикл for(). За время, затрачиваемое на один проход итерационного цикла, векторизованный расчет можно повторить 278 раз.

Функция «Повторить против реплики»

Функция или цикл Repeat в R используется, когда мы хотим многократно выполнять один и тот же блок кода, пока не будет выполнено определенное условие. Это очень похоже на циклы for и while, которые многократно выполняют командный блок до прерывания. Основной синтаксис для создания повторяющегося цикла:

повторить {

если (условие) {

перерыв

}

}

Следующий пример пояснит использование функции Repeat:

В приведенном выше примере повторный цикл суммирует значение, пока не достигнет 6. Как только цикл достигает 6, цикл прерывается, печатая «повторяющийся цикл заканчивается».

С другой стороны, функция репликации или rep в R используется для репликации значений. Базовый синтаксис R для использования функции rep():

  1. повтор(значение,количество_раз)
  2. rep(последовательность,каждый,количество_раз)

Вот несколько примеров для понимания функции rep():

Пример: использование функции rep() для репликации значений определенное количество раз

В приведенном выше примере значение 2 повторяется десять раз.

Пример: Использование функции rep() с атрибутом длины

В приведенном выше примере от 1 до 4 печатаются последовательно, пока количество элементов не достигнет 20.

Пример: использование функции rep() для репликации списка

В приведенном выше примере рейтинговый список от 1 до 5 воспроизведен трижды.

Источник

Использование функции rep() для расширения вектора

Функция rep() — это гибкий способ повторения вектора. Вот еще несколько примеров:

В случае, если нам нужно расширить статистический вектор экспериментальных/наблюдательных единиц в вектор набора данных с повторными наблюдениями за единицами, каждый аргумент очень удобен. Пример:

Еще одна особенность rep() заключается в том, что вектор можно расширить до несбалансированной панели, заменив аргумент длины вектором, который указывает, сколько раз каждый элемент в векторе будет повторяться. Пример:

Более простые и быстрые версии функции rep включают rep_len() и rep.int(). Эти более новые версии поставляются без некоторых атрибутов rep(), но оказываются полезными в случаях, когда скорость является основной, а дополнительные аспекты повторяющегося вектора нежелательны.

Источник

Читайте: 6 интересных идей проекта R для начинающих

Заключение

В этой статье мы обсудили функции Repeat и Replicate с подходящими примерами. В то время как традиционные итерации полезны для повторного выполнения блоков кода, повторение в R идеально подходит для репликации значений вектора или списка. Эффективная и экономящая время функция rep() упростила векторную репликацию!

Если вам интересно узнать о R, науке о данных, ознакомьтесь с программой Executive PG IIIT-B и upGrad по науке о данных, которая создана для работающих профессионалов и предлагает более 10 тематических исследований и проектов, практические семинары, наставничество с отраслевыми экспертами. , общение один на один с отраслевыми наставниками, более 400 часов обучения и помощь в трудоустройстве в ведущих фирмах.

Как я могу создать вектор с повторяющимися значениями в R?

Функция rep() в R может использоваться для повторения последовательности целых чисел. В R есть два метода создания вектора с повторяющимися значениями; первый метод повторяет каждый элемент вектора, а второй метод повторяет элементы заданное количество раз. Векторы создаются с использованием функции rep в каждом из этих подходов. Например, rep(1:5, times=5) дает вектор с последовательностью от 1 до 5, повторяющейся 5 раз.

Какая функция быстрее — Replicate или For Loop?

В языке программирования R функция цикла For работает быстрее, чем функция репликации. Цикл for — это метод перебора списка значений в различных языках программирования путем запуска кода для каждого значения в списке. rep() — это векторизованная циклическая функция, единственной целью которой является выполнение без потери памяти. Когда вам нужно изменить часть существующего фрейма данных, цикл For Loop обычно является лучшим вариантом.

Как я могу ускорить коды R?

Некоторые методы ускорения R-кодов перечислены ниже:

1. Прежде чем помещать свои структуры данных и выходные переменные в цикл для вычислений, убедитесь, что они имеют правильную длину и тип данных. Внутри цикла старайтесь не увеличивать объем данных постепенно.
2. По возможности используйте матрицу вместо фрейма данных, так как фреймы данных могут создавать проблемы во многих ситуациях. В результате используйте фреймы данных только в случае крайней необходимости.
3. По возможности используйте векторные и матричные операции.
4. В R не меняйте тип или размер объекта. Изменение типа и размера объекта R приводит к перераспределению пространства памяти, чего по умолчанию недостаточно.