English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
R 语言为线性代数的研究提供了矩阵类型,这种数据结构很类似于其它语言中的二维数组,但 R 提供了语言级的矩阵运算支持。
矩阵里的元素可以是数字、符号或数学式。
一个 M x N 的矩阵是一个由 M(row) 行 和 N 列(column)元素排列成的矩形阵列。
以下是一个由 6 个数字元素构成的 2 行 3 列的矩阵:
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) # definire i nomi delle righe e delle colonne 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 Language fornisce la funzione t(), che può essere utilizzata per invertire le righe e le colonne di una matrice.
Ad esempio, una matrice di dimensioni m x n può essere trasformata in una matrice n x m utilizzando la funzione t().
# creare una matrice 2x3 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 # trasformare in una matrice 3x2 print(t(M))
执行以上代码输出结果为:
[,1] [,2] [,3] [1,] 2 6 5 [2,] 1 10 4 [1] "-----trasformazione-----" [,1] [,2] [1,] 2 1 [2,] 6 10 [3,] 5 4
Se si desidera ottenere un elemento della matrice, è possibile utilizzare l'indice della colonna e dell'indice della riga, come in un sistema di coordinate.
# definire i nomi delle righe e delle colonne rownames <- c("row1", "row2", "row3", "row4") colnames <- c("col1", "col2", "col3") # creare una matrice P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames)) print(P) # ottenere l'elemento della prima riga e della terza colonna print(P[1,3]) # ottenere l'elemento della quarta riga e della seconda colonna print(P[4,2]) # ottenere la seconda riga print(P[2,]) # ottenere la terza colonna 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
Le matrici di dimensioni identiche (numero di righe e colonne uguali) possono essere sommate o sottratte, operando l'addizione o la sottrazione sui singoli elementi delle posizioni corrispondenti. Il prodotto di matrici è più complesso. Due matrici possono essere moltiplicate tra loro, e solo se il numero di colonne della prima matrice è uguale al numero di righe della seconda matrice.
# 创建 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) # somma di due matrici result <- matrix1 + matrix2 cat("risultato somma:","\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