0Pricing
R Academy · Урок

Создание матриц с помощью matrix()

Создавайте матрицы, указывая data, nrow, ncol и byrow.

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

Что такое матрица в R

Матрица в R — это двумерная структура данных, все элементы которой должны иметь один и тот же тип. Представьте её как таблицу со строками и столбцами. Матрицы необходимы для линейной алгебры, обработки изображений и статистических вычислений.

# A simple 2x3 matrix
m <- matrix(1:6, nrow = 2, ncol = 3)
cat('A 2x3 matrix:
')
print(m)
cat('Dimensions:', dim(m), '
')  # rows cols

matrix(data, nrow, ncol)

Функция matrix() принимает вектор данных и размещает его по строкам и столбцам. По умолчанию R заполняет матрицу по столбцам (в порядке следования столбцов).

# Filled column by column (default)
m_col <- matrix(1:12, nrow = 3, ncol = 4)
cat('Column-filled 3x4 matrix:
')
print(m_col)
cat('Note: 1,2,3 fill the first COLUMN, not the first row
')

byrow = TRUE для заполнения по строкам

Установка byrow = TRUE заполняет матрицу по строкам. Это часто более интуитивно, если вы мыслите о данных как о строках, например в электронной таблице.

# Filled row by row
m_row <- matrix(1:12, nrow = 3, ncol = 4, byrow = TRUE)
cat('Row-filled 3x4 matrix:
')
print(m_row)
cat('Note: 1,2,3,4 fill the first ROW
')

# Verify byrow
m_check <- matrix(c(1,2,3,4,5,6), nrow = 2, byrow = TRUE)
print(m_check)

Матрица из вектора данных

Смысловую матрицу можно создать, передав настоящий вектор данных. Если вектор короче, чем nrow * ncol, R будет циклически повторять его, но рекомендуется указывать ровно нужное число элементов.

# Exam scores: 3 students, 4 subjects
scores_data <- c(88, 92, 75, 81,   # Student 1
                 79, 85, 90, 73,   # Student 2
                 95, 78, 82, 88)   # Student 3

exam_matrix <- matrix(scores_data, nrow = 3, ncol = 4, byrow = TRUE)
rownames(exam_matrix) <- c('Alice', 'Bob', 'Carol')
colnames(exam_matrix) <- c('Math', 'Science', 'English', 'History')
print(exam_matrix)

dim() — проверка размерностей

dim(m) возвращает числовой вектор длины 2: сначала число строк, затем число столбцов. Для получения отдельных размерностей также можно использовать nrow(m) и ncol(m).

m <- matrix(1:20, nrow = 4, ncol = 5)
cat('dim(m):', dim(m), '
')       # 4 5
cat('nrow(m):', nrow(m), '
')     # 4
cat('ncol(m):', ncol(m), '
')     # 5
cat('Total elements:', length(m), '
')  # 20

is.matrix() — проверка типа

is.matrix(x) возвращает TRUE, если x является матрицей. Это удобно для проверки входных данных функции. Обратите внимание: матрица также является массивом (is.array() тоже возвращает TRUE).

m <- matrix(1:4, nrow = 2)
v <- c(1, 2, 3, 4)

cat('is.matrix(m):', is.matrix(m), '
')  # TRUE
cat('is.matrix(v):', is.matrix(v), '
')  # FALSE
cat('is.array(m): ', is.array(m), '
')   # TRUE (matrix IS an array)
cat('class(m):    ', class(m), '
')

Нулевая и единичная матрицы

Специальные матрицы можно создавать, циклически повторяя одно значение. matrix(0, n, n) создаёт нулевую матрицу, а diag(n) — единичную матрицу размера n × n (единицы на диагонали и нули в остальных позициях).

# Zero matrix 3x3
zero_mat <- matrix(0, nrow = 3, ncol = 3)
cat('Zero matrix:
')
print(zero_mat)

# Identity matrix 3x3
identity_mat <- diag(3)
cat('Identity matrix:
')
print(identity_mat)

Матрица из циклически повторяемых значений

Если вектор данных короче, чем nrow * ncol, R циклически повторяет его, начиная с начала. R выдаёт предупреждение, если длина вектора не делится на размер матрицы без остатка.

# Recycle a 2-element vector into a 4x4 matrix
alternate <- matrix(c(0, 1), nrow = 4, ncol = 4)
cat('Recycled 0,1 into 4x4:
')
print(alternate)

# Checkerboard effect: fills column by column

Указание только nrow или ncol

Достаточно указать только один из аргументов — nrow или ncol; R автоматически вычислит другой на основе длины данных. Если данные не делятся нацело, R будет повторять их циклически и выдаст предупреждение.

# Only specify nrow, R infers ncol
m1 <- matrix(1:12, nrow = 3)
cat('nrow=3 only, inferred ncol =', ncol(m1), '
')
print(m1)

# Only specify ncol, R infers nrow
m2 <- matrix(1:12, ncol = 4)
cat('ncol=4 only, inferred nrow =', nrow(m2), '
')

Символьная матрица

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

# Tic-tac-toe board
board <- matrix(c('X', 'O', 'X',
                   'O', 'X', 'O',
                   'O', 'X', 'O'),
                nrow = 3, ncol = 3, byrow = TRUE)
cat('Tic-Tac-Toe board:
')
print(board)
cat('Type:', class(board), '
')

Создание матриц: краткий обзор

Обзор способов создания матриц в R:

  • matrix(data, nrow, ncol) — базовое создание (по умолчанию заполнение по столбцам)
  • matrix(data, nrow, ncol, byrow=TRUE) — заполнение по строкам
  • matrix(0, n, m) — нулевая матрица
  • diag(n) — единичная матрица
  • dim(m), nrow(m), ncol(m) — просмотр размерностей
  • is.matrix(m) — проверка типа
# Quick creation reference
cat('3x2 column-fill:
'); print(matrix(1:6, 3, 2))
cat('3x2 row-fill:
');    print(matrix(1:6, 3, 2, byrow=TRUE))
cat('2x2 zeros:
');       print(matrix(0, 2, 2))
cat('3x3 identity:
');    print(diag(3))

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

Каков порядок заполнения элементов в matrix() по умолчанию (без byrow = TRUE)?

Итоги: создание матриц

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

  • matrix(data, nrow, ncol) создаёт матрицу — по умолчанию данные заполняются по столбцам
  • Используйте byrow = TRUE, чтобы заполнять матрицу по строкам
  • Достаточно указать только nrow ИЛИ ncol — R выведет другое значение автоматически
  • dim(m) возвращает c(rows, cols); nrow() и ncol() возвращают отдельные количества
  • is.matrix() проверяет, является ли объект матрицей
  • matrix(0, n, n) создаёт нулевую матрицу; diag(n) создаёт единичную матрицу
# Full workflow: create, inspect, verify
m <- matrix(seq(2, 24, by = 2), nrow = 4, ncol = 3, byrow = TRUE)
cat('Even numbers matrix:
')
print(m)
cat('Rows:', nrow(m), '| Cols:', ncol(m), '| Elements:', length(m), '
')

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

Урок «Создание матриц с помощью matrix()» бесплатный?

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

Чему я научусь в уроке «Создание матриц с помощью matrix()»?

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

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

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

Сколько времени занимает урок «Создание матриц с помощью matrix()»?

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

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

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

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

  1. Создание матриц с помощью matrix()
  2. Индексация и выборка элементов матриц
  3. Арифметика и операции над матрицами
  4. Транспонирование и изменение формы матриц
← Назад к R Academy