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Задайте имена строк и столбцов

Создайте числовую матрицу:

Пример

# Если byrow имеет значение TRUE, элементы располагаются по строкам
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().

Пример

# Создать матрицу с 2 строками и 3 столбцами
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 

Вычисления с матрицами

Матрицы одинакового размера (с одинаковым числом строк и столбцов) можно складывать и вычитать, а именно складывая или вычитая элементы на каждой позиции. Умножение матриц сложнее. Две матрицы можно перемножить тогда и только тогда, когда число столбцов первой матрицы равно числу строк второй матрицы.

Сложение и вычитание матриц

Пример

# Создать матрицу с 2 строками и 3 столбцами
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

Умножение и деление матриц

Пример

# Создать матрицу с 2 строками и 3 столбцами
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
Другие расширения