English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Массивы в R

Язык 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

transpose matrix

Язык программирования 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,]    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")
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