R Matrix
Язык R предоставляет матричные типы для исследований в области линейной алгебры. Эта структура данных очень похожа на двумерные массивы в других языках, но R обеспечивает поддержку матричных операций на уровне языка.
Элементами матрицы могут быть числа, символы или математические выражения.
AM x Nматрица состоит изM (строка) строкиN (столбец) столбцовэлементов, расположенных в прямоугольном массиве.

Ниже представлена матрица из 2 строк и 3 столбцов, состоящая из 6 числовых элементов:
Матрицы в языке R можно создавать с помощью функции matrix(). Формат синтаксиса следующий:
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)
Описание параметра:
dataВектор, данные матрицы
nrowКоличество строк
ncolКоличество столбцов
byrowЛогическое значение. Если FALSE, располагать по столбцам; если TRUE, располагать по строкам
dimnameЗадайте имена строк и столбцов
Создайте числовую матрицу:
Пример
M <- matrix(c(3:14), nrow = 4, byrow = TRUE)
print(M)
# Если byrow имеет значение FALSE, элементы располагаются по столбцам
N <- matrix(c(3:14), nrow = 4, byrow = FALSE)
print(N)
# Определите имена строк и столбцов
rownames = c("row1", "row2", "row3", "row4")
colnames = c("col1", "col2", "col3")
P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))
print(P)
Выполнение приведённого выше кода даёт следующий результат:
[,1] [,2] [,3]
[1,] 3 4 5
[2,] 6 7 8
[3,] 9 10 11
[4,] 12 13 14
[,1] [,2] [,3]
[1,] 3 7 11
[2,] 4 8 12
[3,] 5 9 13
[4,] 6 10 14
col1 col2 col3
row1 3 4 5
row2 6 7 8
row3 9 10 11
row4 12 13 14
Транспонирование матрицы
Матрицы языка R предоставляютt()функцию, которая может выполнять перестановку строк и столбцов матриц.
Например, матрицу с m строками и n столбцами можно преобразовать в матрицу с n строками и m столбцами с помощью функции t().

Пример
M = matrix( c(2,6,5,1,10,4), nrow = 2,ncol = 3,byrow = TRUE)
print(M)
[,1] [,2] [,3]
[1,] 2 6 5
[2,] 1 10 4
# Преобразовать в матрицу с 3 строками и 2 столбцами
print(t(M))
Выполнение приведённого выше кода даёт следующий результат:
[,1] [,2] [,3]
[1,] 2 6 5
[2,] 1 10 4
[1] "-----转换-----"
[,1] [,2]
[1,] 2 1
[2,] 6 10
[3,] 5 4
Доступ к элементам матрицы
Если вы хотите получить элементы матрицы, можно использовать индекс столбца и индекс строки элементов, подобно координатной форме.
Пример
rownames = c("row1", "row2", "row3", "row4")
colnames = c("col1", "col2", "col3")
# Создать матрицу
P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))
print(P)
# Получить элемент в первой строке и третьем столбце
print(P[1,3])
# Получить элемент в четвёртой строке и втором столбце
print(P[4,2])
# Получить вторую строку
print(P[2,])
# Получить третий столбец
print(P[,3])
Выполнение приведённого выше кода даёт следующий результат:
col1 col2 col3
row1 3 4 5
row2 6 7 8
row3 9 10 11
row4 12 13 14
[1] 5
[1] 13
col1 col2 col3
6 7 8
row1 row2 row3 row4
5 8 11 14
Вычисления с матрицами
Матрицы одинакового размера (с одинаковым числом строк и столбцов) можно складывать и вычитать, а именно складывая или вычитая элементы на каждой позиции. Умножение матриц сложнее. Две матрицы можно перемножить тогда и только тогда, когда число столбцов первой матрицы равно числу строк второй матрицы.
Сложение и вычитание матриц
Пример
matrix1 <- matrix(c(7, 9, -1, 4, 2, 3), nrow = 2)
print(matrix1)
matrix2 <- matrix(c(6, 1, 0, 9, 3, 2), nrow = 2)
print(matrix2)
# Сложение двух матриц
result <- matrix1 + matrix2
cat("Результат сложения:","\n")
print(result)
# Вычитание двух матриц
result <- matrix1 - matrix2
cat("Результат вычитания:","\n")
print(result)
Выполнение приведённого выше кода даёт следующий результат:
[,1] [,2] [,3]
[1,] 7 -1 2
[2,] 9 4 3
[,1] [,2] [,3]
[1,] 6 0 3
[2,] 1 9 2
相加结果:
[,1] [,2] [,3]
[1,] 13 -1 5
[2,] 10 13 5
相减结果:
[,1] [,2] [,3]
[1,] 1 -1 -1
[2,] 8 -5 1
Умножение и деление матриц
Пример
matrix1 <- matrix(c(7, 9, -1, 4, 2, 3), nrow = 2)
print(matrix1)
matrix2 <- matrix(c(6, 1, 0, 9, 3, 2), nrow = 2)
print(matrix2)
# Умножение двух матриц
result <- matrix1 * matrix2
cat("Результат умножения:","\n")
print(result)
# Деление двух матриц
result <- matrix1 / matrix2
cat("Результат деления:","\n")
print(result)
Выполнение приведённого выше кода даёт следующий результат:
[,1] [,2] [,3]
[1,] 7 -1 2
[2,] 9 4 3
[,1] [,2] [,3]
[1,] 6 0 3
[2,] 1 9 2
相乘结果:
[,1] [,2] [,3]
[1,] 42 0 6
[2,] 9 36 6
相除结果:
[,1] [,2] [,3]
[1,] 1.166667 -Inf 0.6666667
[2,] 9.000000 0.4444444 1.5000000 Другие расширения