R 矩陣

2021-02-19 雲深之無跡

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)

參數說明:

創建一個數字矩陣:

實例

# 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)

執行以上代碼輸出結果為:

[,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 列的矩陣,使用 t() 函數就能轉換為 n 行 m 列的矩陣。

實例

# 創建一個 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

相關焦點

  • R與數學專題矩陣運算
    溫馨提示:每期乾貨不容錯過,點擊文章末尾「閱讀原文」查看上期內容~~這一周將接著給大家介紹 R在矩陣運算的相關計算。通過對本文的學習,你將會掌握矩陣的創建,矩陣的基本運算,矩陣的分解;行列式的相關運算。1.
  • R與數學專題 矩陣運算
    溫馨提示:每期乾貨不容錯過,點擊文章末尾「閱讀原文」查看上期內容~~這一周將接著給大家介紹 R在矩陣運算的相關計算。通過對本文的學習,你將會掌握矩陣的創建,矩陣的基本運算,矩陣的分解;行列式的相關運算。1.
  • R 語言中的矩陣計算
    作者:張丹(Conan)來源:http://blog.fens.me/r-matrix/前言R 是作為統計語言,生來就對數學有良好的支持。矩陣計算作為底層的數學工具,有非常廣泛的使用場景。用R語言很好地封裝了,矩陣的各種計算方法,一個函數一行代碼,就能完成複雜的矩陣分解等操作。
  • R語言中獲取矩陣中元素的幾種形式
    在上一篇文章中,小編介紹了R語言中創建矩陣的幾種形式。今天,我們再來探討一下如何訪問矩陣中的元素。在R語言中獲取矩陣中的元素主要有以下幾種形式:獲取矩陣中所有的元素值只要使用矩陣名就可以獲取整個矩陣中的所有元素。
  • R語言學習筆記之相關性矩陣分析及其可視化
    rcorr(x, type = c(「pearson」,「spearman」))。The output of the function rcorr() is a list containing the following elements : - r : the correlation matrix - n : the matrix of the number of observations used in analyzing each pair of variables
  • R語言中編輯矩陣中元素的方法
    在實際數據處理過程中,我們有時需要對數據中的元素進行修改,或刪除矩陣中的某一行或某一列,甚至需要將兩個矩陣進行合併。本文將介紹在R語言中如何實現對矩陣元素的修改操作。))在R語言中,主要通過以下幾種形式來修改矩陣中的元素值。
  • 正定矩陣與半正定矩陣
    今天學習兩個知識點,一個是Hessian矩陣,一個是正定與半正定。1. 什麼是Hessian矩陣?性質:正定矩陣的行列式恆為正;實對稱矩陣A正定若且唯若A與單位矩陣合同;(合同矩陣:設A,B是兩個n階方陣,若存在可逆矩陣C,使得
  • 深度解析可逆矩陣與等價矩陣的區別與聯繫
    儘管你可能會計算一個具體矩陣的可逆矩陣,但是你知道這種做法背後的原理嗎?儘管你對等價矩陣的定義背誦如流,但是你知道如何快速判斷兩個矩陣是否是等價矩陣嗎?儘管從一個矩陣變換到可逆矩陣、等價矩陣的過程中,都涉及到矩陣的初等變換,但是你知道兩者涉及到的初等變換的區別嗎?
  • R語言學習之矩陣
    對於矩陣而言,我們當然想實現以下操作與功能:矩陣的加減、乘除運算矩陣的行列切片最值的快速獲取線性代數運算好在R語言中的矩陣可以很輕易幫我們實現這些功能,有了這一神兵利器,我們就可以遊刃有餘地操作應該算是數據分析的基本單位——矩陣了。
  • R語言基礎教程之矩陣
    雖然我們可以創建一個僅包含字符或僅包含邏輯值的矩陣,但它們沒有太多用處。 我們使用包含數學元素的矩陣來在數學計算中使用。矩陣可通過使用matrix()函數來創建。可以使用元素的列和行索引來訪問矩陣的元素。
  • 機器學習筆記一 線性方程組和矩陣
    kRi + Rj1.2矩陣定義和階梯型矩陣1. 矩陣的非零行個數是唯一的,矩陣A的階梯形中的非零行的個數稱為秩,表示為r(A),其中A是矩陣;2. r(A) = r(AT)3.r(AB) ≤ min{r(A),r(B)}4. 簡化階梯形的定義:階梯形的主元所在的列都為0所形成的矩陣就是簡化階梯形矩陣。註:矩陣的簡化階梯形是唯一的。
  • 【LeetCode溫故而知新】螺旋矩陣
    問題或建議,請公眾號留言;如果你覺得文章對你有幫助,歡迎關注分享題目 給定一個包含 m x n 個元素的矩陣(m 行, n 列),請按照順時針螺旋順序,返回矩陣中的所有元素。假設有個大小為 m*n 的矩陣,解題步驟如下定義方向private static int DIRECTION_RIGHT = 0;private static int DIRECTION_DOWN = 1;private static int DIRECTION_LEFT = 2;private static int DIRECTION_UP
  • 考研數學矩陣乘法複習指導
    儘管矩陣乘法不滿足交換律。但是,矩陣乘法在多方面的成功應用,令人感到很愜意。         1.若A,B都是n階方陣,則|AB|=|A||B|。        我們知道,|A+B|難解。
  • Go 刷 LeetCode 系列:螺旋矩陣
    歸納:   對於螺旋矩陣之類的題目有很多變形
  • 矩陣中的路徑(劍指 Offer 題解Java版)
    矩陣中的路徑題目描述判斷在一個矩陣中是否存在一條包含某字符串所有字符的路徑。路徑可以從矩陣中的任意一個格子開始,每一步可以在矩陣中向上下左右移動一個格子。如果一條路徑經過了矩陣中的某一個格子,則該路徑不能再進入該格子。例如下面的矩陣包含了一條 bfce 路徑。
  • 【三套卷講解】關於實對稱矩陣的伴隨矩陣
    本期的考點為「關於實對稱矩陣的伴隨矩陣」,這道題在數一、數二、數三的模擬題第一套中都出現了,也就是說,我們希望大家都能對這道題的考法有所了解~看完講解視頻下方還有思路總結本題中,我們從實對稱矩陣A的特徵值出發,推導得到A*的具體表達。
  • R語言 | Pearson、Spearman、Kendall、Polychoric、Polyserial相關係數簡介及R計算
    計算相關矩陣及顯著性水平。library(psych) #所有變量間相關係數的對稱矩陣corr_matrix <- corr.test(mtcars, method = 'pearson')corr_matrix$r #相關矩陣corr_matrix$p #p 值矩陣 #相關圖,只展示 p < 0.05 的相關係數library
  • 名家指導:考研數學矩陣乘法複習指導
    儘管矩陣乘法不滿足交換律。但是,矩陣乘法在多方面的成功應用,令人感到很愜意。   1.若A,B都是n階方陣,則|AB|=|A||B|。   我們知道,|A+B|難解。相比之下,乘積算法複雜得多,而積矩陣行列式公式卻如此簡明,自然顯示了矩陣乘法之成功。
  • 相關係數簡介及R計算
    計算相關矩陣及顯著性水平。library(psych) #所有變量間相關係數的對稱矩陣corr_matrix <- corr.test(mtcars, method = 'pearson')corr_matrix$r #相關矩陣corr_matrix$p #p 值矩陣 #相關圖,只展示 p < 0.05 的相關係數library
  • 矩陣乘法的純Python實現 | 離開Python庫!!
    在進行任何矩陣乘法之前,第一步是檢查兩個矩陣之間的這種運算是否真的可行。這可以通過檢查第一個矩陣的列數是否等於第二個矩陣中的行數來判斷。這可以表述為:矩陣A的行數 = 矩陣B的列數根據這個策略,我們可以制定我們的第一個代碼塊。