R Language
Матрицы
Поиск…
Вступление
Матрицы хранят данные
Создание матриц
Под капотом матрица представляет собой особый вид вектора с двумя измерениями. Как вектор, матрица может иметь только один класс данных. Вы можете создавать матрицы, используя matrix
функцию, как показано ниже.
matrix(data = 1:6, nrow = 2, ncol = 3)
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
Как вы можете видеть, это дает нам матрицу всех чисел от 1 до 6 с двумя строками и тремя столбцами. Параметр data
принимает вектор значений, nrow
указывает количество строк в матрице, а ncol
указывает количество столбцов. По соглашению матрица заполняется столбцом. Поведение по умолчанию может быть изменено с byrow
параметра byrow
как показано ниже:
matrix(data = 1:6, nrow = 2, ncol = 3, byrow = TRUE)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
Матрицы не должны быть числовыми - любой вектор можно преобразовать в матрицу. Например:
matrix(data = c(TRUE, TRUE, TRUE, FALSE, FALSE, FALSE), nrow = 3, ncol = 2)
## [,1] [,2]
## [1,] TRUE FALSE
## [2,] TRUE FALSE
## [3,] TRUE FALSE
matrix(data = c("a", "b", "c", "d", "e", "f"), nrow = 3, ncol = 2)
## [,1] [,2]
## [1,] "a" "d"
## [2,] "b" "e"
## [3,] "c" "f"
Подобно векторам матрицы могут храниться как переменные, а затем вызывать их позже. Строки и столбцы матрицы могут иметь имена. Вы можете посмотреть на них, используя функции rownames
и colnames
. Как показано ниже, строки и столбцы первоначально не имеют имен, которые обозначаются NULL
. Однако вы можете присвоить им значения.
mat1 <- matrix(data = 1:6, nrow = 2, ncol = 3, byrow = TRUE)
rownames(mat1)
## NULL
colnames(mat1)
## NULL
rownames(mat1) <- c("Row 1", "Row 2")
colnames(mat1) <- c("Col 1", "Col 2", "Col 3")
mat1
## Col 1 Col 2 Col 3
## Row 1 1 2 3
## Row 2 4 5 6
Важно отметить, что аналогично векторам матрицы могут иметь только один тип данных. Если вы попытаетесь указать матрицу с несколькими типами данных, данные будут принуждаться к классу данных более высокого порядка.
Функции class
, is
и as
могут использоваться для проверки и принуждения структур данных таким же образом, как они использовались для векторов в классе 1.
class(mat1)
## [1] "matrix"
is.matrix(mat1)
## [1] TRUE
as.vector(mat1)
## [1] 1 4 2 5 3 6