0Pricing
R Academy · Урок

Оператор двоеточия для целочисленных диапазонов

Используйте оператор двоеточия для быстрого создания целочисленных последовательностей.

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

Оператор двоеточия

Оператор : создаёт целочисленную последовательность от начального значения до конечного, увеличивая значение на 1 (или уменьшая на 1 для убывающей последовательности). Это самый быстрый и лаконичный способ создать диапазон в R.

# Basic integer range
ones_to_ten <- 1:10
cat('1 to 10:', ones_to_ten, '
')

# Descending range
ten_to_one <- 10:1
cat('10 to 1:', ten_to_one, '
')

Использование : в циклах for

Оператор двоеточия чаще всего используется для счётчиков циклов for. Он создаёт последовательность непосредственно в цикле, без отдельной переменной, сохраняя код кратким.

# Classic for loop with colon range
total <- 0
for (i in 1:5) {
  total <- total + i
  cat('i =', i, ', running total =', total, '
')
}
cat('Sum of 1 to 5:', total, '
')

Отрицательные и дробные диапазоны

Оператор : работает с отрицательными числами и даже с дробями, хотя шаг всегда равен 1 или -1. Если начало равно концу, он возвращает одно значение.

# Negative range
neg_range <- -3:3
cat('-3 to 3:', neg_range, '
')

# Range crossing zero
cross_zero <- -5:5
cat('-5 to 5:', cross_zero, '
')

# Single value
cat('5:5 =', 5:5, '
')

# Decimal start (step is still 1)
cat('1.5:5.5 =', 1.5:5.5, '
')

seq_len() для безопасного создания последовательностей

seq_len(n) создаёт последовательность 1, 2, ..., n. В отличие от 1:n, этот вариант безопаснее: при n = 0 он возвращает пустой вектор вместо c(1, 0), предотвращая ошибки в циклах.

# Compare 1:n vs seq_len(n) when n = 0
n <- 0
cat('1:0 produces:', 1:n, '(length', length(1:n), ') -- DANGEROUS
')
cat('seq_len(0):', seq_len(n), '(length', length(seq_len(n)), ') -- SAFE
')

# Correct use in a loop
my_vector <- c()  # empty
for (i in seq_len(length(my_vector))) {
  cat('This will not execute
')
}
cat('Loop over empty vector is safe with seq_len
')

seq_along() для создания последовательностей индексов

seq_along(x) создаёт последовательность 1:length(x) — по одному индексу на каждый элемент x. Это самый безопасный способ перебирать вектор по индексам, поскольку функция корректно обрабатывает векторы нулевой длины.

cities <- c('Tokyo', 'Delhi', 'Shanghai', 'Dhaka', 'Cairo')

# seq_along gives indices 1 to length
cat('Indices:', seq_along(cities), '
')

# Use in loop to access both index and value
for (i in seq_along(cities)) {
  cat(i, ':', cities[i], '
')
}

Диапазон с двоеточием при индексации вектора

Оператор : часто используется для извлечения среза из вектора или матрицы. В результате получается непрерывная подпоследовательность элементов.

temperatures <- c(18.5, 21.0, 23.4, 19.8, 25.1, 22.7, 17.3, 20.0)

# Extract a slice (elements 3 to 6)
midweek <- temperatures[3:6]
cat('Midweek temps:', midweek, '
')

# Last 3 elements
n <- length(temperatures)
cat('Last 3:', temperatures[(n-2):n], '
')

Разворот вектора с помощью двоеточия

Сочетание length() и оператора : позволяет простым способом развернуть вектор. Использование rev() более характерно для R, но вариант с двоеточием демонстрирует принцип работы диапазонов.

words <- c('data', 'science', 'with', 'R')
n <- length(words)

# Manual reverse using colon
reversed_idx <- n:1
reversed_words <- words[reversed_idx]
cat('Original:', words, '
')
cat('Reversed:', reversed_words, '
')

# Or simply:
cat('Using rev():', rev(words), '
')

Использование : для создания тестовых данных

Оператор двоеточия удобен для быстрого создания тестовых векторов и матриц при исследовании. Его можно сочетать с арифметикой, чтобы генерировать нетривиальные тестовые данные.

# Create a simple test dataset
student_ids <- 101:110
exam_scores <- (1:10) * 8 + 20  # scores: 28, 36, 44, ...

cat('Student IDs:', student_ids, '
')
cat('Exam scores:', exam_scores, '
')
cat('Mean score:', mean(exam_scores), '
')
cat('Passing count:', sum(exam_scores >= 60), '
')

Предупреждение о приоритете двоеточия

Помните: : имеет более высокий приоритет, чем + и -. Поэтому 1:n-1 означает (1:n) - 1, а не 1:(n-1). Всегда заключайте арифметические выражения в границах последовательности в скобки.

n <- 5

# These look similar but produce different results
cat('1:n-1 =', 1:n - 1, '
')   # (1:5)-1 = 0 1 2 3 4
cat('1:(n-1) =', 1:(n - 1), '
') # 1:4 = 1 2 3 4

# Practical: skip last element
v <- c(10, 20, 30, 40, 50)
cat('All but last:', v[1:(length(v) - 1)], '
')

Объединение диапазонов

Вы можете объединить несколько диапазонов с помощью c(). Так создаётся вектор индексов с пропусками, который удобно использовать для выбора определённых частей большого вектора.

data_vals <- c(5, 12, 3, 8, 15, 7, 20, 1, 9, 11)

# Select first 3 and last 3
first_and_last <- data_vals[c(1:3, 8:10)]
cat('First 3 and last 3:', first_and_last, '
')

# Skip middle: take 1:3 and 7:10
outer <- data_vals[c(1:3, 7:10)]
cat('Outer elements:', outer, '
')

Целочисленные диапазоны: краткое содержание

Оператор двоеточия и связанные с ним средства — важные инструменты R:

  • a:b — целочисленная последовательность от a до b (с шагом 1 или -1)
  • seq_len(n) — безопасный вариант 1:n (обрабатывает n=0)
  • seq_along(x) — безопасная последовательность индексов для вектора x
  • Используйте скобки: 1:(n+1), а не 1:n+1
  • Подходит для счётчиков циклов, извлечения срезов и быстрого создания тестовых данных
# All three in action
x <- c(100, 200, 300, 400, 500)
cat('1:5         :', 1:5, '
')
cat('seq_len(5)  :', seq_len(5), '
')
cat('seq_along(x):', seq_along(x), '
')
cat('x[2:4]      :', x[2:4], '
')

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

Что создаёт выражение 1:n + 1, если n = 4?

Повторение: оператор двоеточия

Отличная работа! Вот основные выводы из этого урока:

  • a:b создаёт целочисленную последовательность от a до b с шагом 1 (или -1 для убывающей последовательности)
  • Используйте seq_len(n) вместо 1:n, если n может быть равен 0
  • Используйте seq_along(x) для безопасного перебора индексов вектора в циклах
  • Двоеточие : имеет более высокий приоритет, чем +/-; всегда заключайте арифметические границы в скобки
  • Диапазоны можно объединять с помощью c() для получения срезов с пропусками
# Safe loop pattern with seq_along
months <- c('Jan', 'Feb', 'Mar', 'Apr', 'May')
days <- c(31, 28, 31, 30, 31)

for (i in seq_along(months)) {
  cat(months[i], ':', days[i], 'days
')
}

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

Урок «Оператор двоеточия для целочисленных диапазонов» бесплатный?

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

Чему я научусь в уроке «Оператор двоеточия для целочисленных диапазонов»?

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

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

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

Сколько времени занимает урок «Оператор двоеточия для целочисленных диапазонов»?

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

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

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

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

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