0Pricing
R Academy · Урок

rep() для повторения значений

Повторяйте значения и векторы с помощью rep(), аргументов times и each.

«rep() для повторения значений» — бесплатный урок R Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения R Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс R Academy содержит 4 уроков всего.

Введение в rep()

rep() — сокращение от replicate. Эта функция повторяет значения или векторы заданное число раз. Это один из самых полезных инструментов для создания структурированных тестовых данных, сбалансированных наборов данных и заполнения векторов значениями по умолчанию.

# Repeat a single value
zeros <- rep(0, times = 5)
cat('Five zeros:', zeros, '
')

# Repeat a string
status <- rep('active', times = 4)
cat('Status:', status, '
')

rep(x, times) — повторение всего вектора

Если x — вектор, а times — одно целое число, rep() повторяет весь вектор указанное число раз. Длина результата равна length(x) * times.

# Repeat a vector 3 times
weekend <- c('Saturday', 'Sunday')
four_weekends <- rep(weekend, times = 4)
cat('4 weekends:', four_weekends, '
')

# Repeat numeric vector
pattern <- c(1, 2, 3)
cat('Pattern x3:', rep(pattern, times = 3), '
')

rep(x, each) — повторение каждого элемента

Аргумент each повторяет каждый отдельный элемент, прежде чем перейти к следующему. В этом заключается его главное отличие от times: each повторяет элементы на их исходных местах.

groups <- c('A', 'B', 'C')

# times: repeats whole vector
cat('times=3:', rep(groups, times = 3), '
')
# A B C A B C A B C

# each: repeats each element before next
cat('each=3 :', rep(groups, each = 3), '
')
# A A A B B B C C C

rep(x, times = c(...)) — переменное число повторений

Если times — это вектор той же длины, что и x, каждый элемент x повторяется соответствующее ему число раз. Это позволяет точно управлять повторениями.

# Different number of repeats per element
fruits <- c('apple', 'banana', 'cherry')
counts <- c(3, 1, 2)

fruit_basket <- rep(fruits, times = counts)
cat('Fruit basket:', fruit_basket, '
')
# apple apple apple banana cherry cherry

# Useful for creating category labels
cat('Length:', length(fruit_basket), '
')

rep_len() — повторение до фиксированной длины

rep_len(x, length.out) повторяет вектор x, пока результат не достигнет ровно length.out элементов. Повторение выполняется циклически: при необходимости функция снова начинает с начала вектора.

# Cycle through seasons to fill 12 months
seasons <- c('Spring', 'Summer', 'Autumn', 'Winter')
year_seasons <- rep_len(seasons, length.out = 12)
cat('12 months by season:', year_seasons, '
')

# Cycle through 1, 2, 3 for 10 items
rotation <- rep_len(1:3, length.out = 10)
cat('Rotation:', rotation, '
')

Комбинирование times и each

Вы можете использовать times и each вместе, чтобы создавать более сложные схемы повторения. R сначала применяет each (повторяя каждый элемент), а затем повторяет получившийся вектор times раз.

# each=2 then times=3
vals <- c(1, 2)
result <- rep(vals, each = 2, times = 3)
cat('each=2, times=3:', result, '
')
# 1 1 2 2  repeated 3 times: 1 1 2 2 1 1 2 2 1 1 2 2

cat('Length:', length(result), '
')

Создание меток сбалансированных групп

Классическое применение rep() — создание меток сбалансированных групп для экспериментов, в которых требуется одинаковое число наблюдений в каждой группе.

# 5 subjects per treatment group
treatments <- c('Control', 'LowDose', 'HighDose')
n_per_group <- 5

group_labels <- rep(treatments, each = n_per_group)
cat('Group labels:', group_labels, '
')
cat('Total subjects:', length(group_labels), '
')

# Count per group
for (g in treatments) {
  cat(g, ':', sum(group_labels == g), '
')
}

Повторение логических значений

rep() работает с любыми типами данных, включая логические значения. Это удобно для создания масок, флагов или чередующихся шаблонов TRUE/FALSE.

# Alternating TRUE/FALSE pattern
alternate <- rep(c(TRUE, FALSE), times = 5)
cat('Alternating mask:', alternate, '
')

# Apply mask to select every other element
data_vals <- 10:19
cat('Every other value:', data_vals[alternate], '
')

# Create a block pattern: 3 TRUE then 3 FALSE
block <- rep(c(TRUE, FALSE), each = 3)
cat('Block pattern:', block, '
')

Заполнение матриц с помощью rep()

С помощью rep() можно быстро заполнять матрицы данными по определённому шаблону. Поскольку matrix() принимает вектор в качестве входных данных, их сочетание упрощает создание шаблонных матриц.

# Fill a 3x4 matrix with a repeating pattern
pattern <- rep(c(1, 0), times = 6)
checker <- matrix(pattern, nrow = 3, ncol = 4)
cat('Checkerboard-like matrix:
')
print(checker)

# Fill diagonal-like with rep
fill <- rep(1:4, each = 3)
cat('Repeated fill:', fill, '
')

Расширение сводной таблицы

Практическое применение rep() с переменным значением times — преобразование таблицы частот обратно в вектор исходных данных. Если известно, сколько раз встречалось каждое значение, rep() восстанавливает наблюдения.

# Summary: grade frequencies
grades <- c('A', 'B', 'C', 'D')
frequencies <- c(5, 12, 8, 3)

# Reconstruct raw grade vector
raw_grades <- rep(grades, times = frequencies)
cat('Raw grades (', length(raw_grades), 'students):', raw_grades, '
')

# Verify frequency table
cat('Freq table:
')
print(table(raw_grades))

Обзор rep()

Краткая памятка по rep():

  • rep(x, times = n) — повторить весь x n раз
  • rep(x, each = n) — повторить каждый элемент n раз
  • rep(x, times = c(...)) — переменное число повторений для каждого элемента
  • rep_len(x, n) — циклически повторять x, пока не будет достигнуто ровно n элементов
  • Работает с любыми типами: числовым, символьным, логическим и фактором
x <- c(10, 20, 30)
cat('times=2  :', rep(x, times = 2), '
')
cat('each=2   :', rep(x, each = 2), '
')
cat('var times:', rep(x, times = c(1, 2, 3)), '
')
cat('rep_len  :', rep_len(x, 7), '
')

Быстрая проверка

Что возвращает rep(c(1, 2), each = 3)?

Итоги: rep() для повторения значений

Превосходно! Основные выводы этого урока:

  • rep(x, times) повторяет весь вектор, а rep(x, each) — каждый элемент отдельно
  • Передача вектора в times задаёт переменное число повторений для каждого элемента
  • rep_len(x, n) циклически повторяет x, пока не будут созданы ровно n элементов
  • Распространённые применения: метки сбалансированных групп, маски, расширение таблиц частот и шаблонные матрицы
  • Одинаково работает с числовыми, символьными и логическими типами данных
# Create a balanced experiment design
treatments <- c('Placebo', 'Drug_A', 'Drug_B')
subjects_per <- 4

design <- rep(treatments, each = subjects_per)
cat('Experiment design:
')
cat(design, '
')
cat('Total N:', length(design), '
')

Часто задаваемые вопросы

Урок «rep() для повторения значений» бесплатный?

Да — полный текст урока «rep() для повторения значений» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс R Academy, подпишись на CoddyKit PRO. Курс R Academy содержит 4 уроков всего.

Чему я научусь в уроке «rep() для повторения значений»?

Повторяйте значения и векторы с помощью rep(), аргументов times и each. Ты практикуешь R Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать R Academy?

Предыдущий опыт не требуется. R Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «rep() для повторения значений»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке R Academy?

Да. Каждый урок R Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Оператор двоеточия для целочисленных диапазонов
  2. seq() для пользовательских последовательностей
  3. rep() для повторения значений
  4. Именованные векторы и последовательности
← Назад к R Academy