English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Язык R предоставляет тип матрицы для исследования линейной алгебры, эта структура данных очень ähnlich anderen Sprachen mit zwei-dimensionalen Arrays, но R предоставляет поддержку вычислений матриц на уровне языка.
Элементы в матрице могут быть числами, символами или математическими выражениями.
Матрица MxN представляет собой набор M строк(row) и N столбцы(column)Элементы arranged in a rectangular array.
Ниже приведен пример матрицы 2x3, состоящей из 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) # Ebyrow на 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)
print(result)
Результат умножения: [1,] 3 4 5 [2,] 6 7 8 [3,] 9 10 11 [4,] 12 13 14 Результат умножения: [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 столбцов, и с помощью функции t() можно преобразовать ее в матрицу n строк m столбцов.
# создать матрицу 2 строки 3 столбца M <- matrix(c(2,6,5,1,10,4), nrow = 2, ncol = 3, byrow = TRUE) print(M) Результат умножения: [1,] 2 6 5 [2,] 1 10 4 # преобразовать в матрицу 3 строки 2 столбца print(t(M))
print(result)
Результат умножения: [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])
print(result)
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) # сложение двух матриц result <- matrix1 + matrix2 cat("сумма: ",\n) cat("Результат деления:","\n") # 两个矩阵相减 # Вычитание двух матриц result <- matrix1 - matrix2 cat("Результат деления:","\n")
print(result)
Результат умножения: Результат выполнения кода: [1,] 7 -1 2 Результат умножения: [2,] 9 4 3 [1,] 6 0 3 cat("Результат вычитания:","\n") Результат умножения: Результат сложения: [1,] 13 -1 5 [2,] 10 13 5 Результат умножения: Результат вычитания: [1,] 1 -1 -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") cat("Результат умножения:","\n") # Деление двух матриц result <- matrix1 / matrix2 cat("Результат деления:","\n")
print(result)
Результат умножения: Результат выполнения кода: [1,] 7 -1 2 Результат умножения: [2,] 9 4 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