免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

R語言筆記丨矩陣、數(shù)組介紹

 內(nèi)科博士符醫(yī)生 2023-10-27 發(fā)布于海南

今天筆記內(nèi)容包含R語言中矩陣和數(shù)組基礎(chǔ)知識(shí)。

R語言矩陣

創(chuàng)建矩陣

矩陣內(nèi)可以是數(shù)字、符號(hào)、數(shù)學(xué)式,類似于常見的二維數(shù)組,有m行(row)n列(col)的矩陣m×n。

R 語言的矩陣可以使用 matrix() 函數(shù)來創(chuàng)建,語法格式如下:matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)

參數(shù)說明:

  • data 向量,矩陣的數(shù)據(jù)

  • nrow 行數(shù)

  • ncol 列數(shù)

  • byrow 邏輯值,為 FALSE 按列排列,為 TRUE 按行排列

  • dimname 設(shè)置行和列的名稱,該參數(shù)用含有兩個(gè)向量(字符串)的列表組成。

# 按行排列創(chuàng)建矩陣
> zhen_1 = matrix(c(1:12),nrow = 3,byrow = TRUE)
> print(zhen_1)
  [,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9   10   11   12
# 定義行和列的名稱
> rownames_1 = c("a1","a2","a3")
> colnames_2 = c("b1","b2","b3","b4")
# 輸出矩陣
> out_1 = matrix(c(1:12),nrow = 3,byrow = TRUE,dimnames = list(rownames_1,colnames_2))
> print(out_1)
   b1 b2 b3 b4
a1  1  2  3  4
a2  5  6  7  8
a3  9 10 11 12

轉(zhuǎn)置矩陣

R 語言矩陣提供了t()函數(shù),可以實(shí)現(xiàn)矩陣的行列互換,變化效果如下:

我們對(duì)剛剛創(chuàng)建的out_1矩陣進(jìn)行轉(zhuǎn)置后輸出,如下:

> out_1 = matrix(c(1:12),nrow = 3,byrow = TRUE,dimnames = list(rownames_1,colnames_2))
> print(out_1)
   b1 b2 b3 b4
a1  1  2  3  4
a2  5  6  7  8
a3  9 10 11 12
> print(t(out_1))  #輸出轉(zhuǎn)置矩陣用t()
   a1 a2 a3
b1  1  5  9
b2  2  6 10
b3  3  7 11
b4  4  8 12

調(diào)用矩陣元素

可以元素的列索引和行索引,類似坐標(biāo)形式,獲取矩陣元素,如下:

> print(out_1) #獲取整個(gè)矩陣
   b1 b2 b3 b4
a1  1  2  3  4
a2  5  6  7  8
a3  9 10 11 12
> print(out_1[1,2]) # 獲取第1行第2列的元素
[12
> print(out_1[2,]) # 獲取第2行的元素
b1 b2 b3 b4 
 5  6  7  8 

矩陣的計(jì)算

大部分人已經(jīng)學(xué)過線性代數(shù),了解矩陣的加減乘除法則,值得注意的是只有行和列數(shù)都相同的矩陣才能加減運(yùn)算,只有第一個(gè)矩陣的列數(shù)等于第二個(gè)矩陣的行數(shù)才能相乘。接下來進(jìn)行演示:

# 矩陣相加,相減只需把加號(hào)改成減號(hào)
> out_sum = m_1 + m_2  # 兩個(gè)矩陣都是2×3
> cat("結(jié)果:","\n")
結(jié)果: 
> print(out_sum)
  [,1] [,2] [,3]
[1,]   14   -2 4
[2,]   18 8 6
# 矩陣相乘
> out_cheng = m_1 * m_2  
> cat("結(jié)果:","\n")
結(jié)果: 
> print(out_cheng)
  [,1] [,2] [,3]
[1,]   49 1 4
[2,]   81   16 9
# 矩陣相除
> out_chu = m_1 / m_2  
> cat("結(jié)果:","\n")
結(jié)果: 
> print(out_chu)
  [,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1

數(shù)組

R 語言可以創(chuàng)建一維或多維數(shù)組,數(shù)組是一個(gè)同一類型的集合,矩陣就是一個(gè)二維數(shù)組。

數(shù)組創(chuàng)建使用array()函數(shù),該函數(shù)使用向量作為輸入?yún)?shù),可以使用 dim 設(shè)置數(shù)組維度。語法格式如下:

array(data = NA, dim = length(data), dimnames = NULL)

  • data 向量,數(shù)組元素。
  • dim 數(shù)組的維度,默認(rèn)是一維數(shù)組。
  • dimnames 維度的名稱,必須是個(gè)列表

例如創(chuàng)建一個(gè)3×3的二維數(shù)組,用于后續(xù)演示,方法如下:

> v1 = c(1,2,3)
> v2 = c(4,5,6,7,8,9)
> shuzu = array(c(v1,v2),dim = c(3,3,2))
> print(shuzu)
, , 1

  [,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9

, , 2

  [,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
  • 設(shè)置各維度的名稱
> column.names = c("col1","col2","col3")  #設(shè)置列名
> row.names = c("row1","row2","row3"#設(shè)置行名
> matrix.names = c("m1","m2"#設(shè)置矩陣名
> out_3 = array(c(v1,v2),dim = c(3,3,2),dimnames = list(row.names,column.names,matrix.names)) #設(shè)置數(shù)組名
> print(out_3) #輸出
, , m1

  col1 col2 col3
row1 1 4 7
row2 2 5 8
row3 3 6 9

, , m2

  col1 col2 col3
row1 1 4 7
row2 2 5 8
row3 3 6 9
#上述m1和m2矩陣應(yīng)用于筆記后面的演示,不再重復(fù)
  • 訪問數(shù)組元素

數(shù)組的元素有坐標(biāo)位置,索引順序?yàn)椋ㄐ?,列,維度),例如[3,2,4]表示第4個(gè)矩陣第3行第2列的元素。

, , m2  #第二個(gè)矩陣

  col1 col2 col3
row1 1 4 7
row2 2 5 8
row3 3 6 9

> print(out_3[3,1,2])
[13  #輸出結(jié)果正確

  • 操作數(shù)組元素

可以通過訪問矩陣的元素來訪問數(shù)組,例如從數(shù)組中的一個(gè)矩陣創(chuàng)建新矩陣,然后進(jìn)行矩陣加減運(yùn)算,演示如下:

> matrix_1 = shuzu[,,1
> matrix_2 = shuzu[,,2]
> sum_1 = matrix_1 + matrix_2
> print(sum_1)
  [,1] [,2] [,3]
[1,] 2 8   14
[2,] 4   10   16
[3,] 6   12   18

apply()函數(shù)能夠?qū)?shù)組跨緯度計(jì)算,語法格式為:apply(x, margin, fun)

  • x 數(shù)組
  • margin 數(shù)據(jù)名稱(1代表行,2代表列,c(1,2)代表行和列)
  • fun 計(jì)算函數(shù)
> print(shuzu)  
, , 1   #數(shù)組的第一個(gè)矩陣
  [,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9

, , 2  #數(shù)組的第二個(gè)矩陣
  [,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9

> out_4 = apply(shuzu,1,sum)  #對(duì)數(shù)組所有矩陣按照每一行的方式求和
> print(out_4)
[124 30 36  #第一行數(shù)據(jù)24=1+4+7+1+4+7,確實(shí)能行!
快速記憶:
# 計(jì)算數(shù)組中所有矩陣對(duì)應(yīng)行的數(shù)字之和
result <- apply(shuzu, c(1), sum)
# 計(jì)算數(shù)組中所有矩陣對(duì)應(yīng)列的數(shù)字之和
result <- apply(shuzu, c(2), sum)
# 計(jì)算數(shù)組中每個(gè)矩陣內(nèi)部的所有數(shù)字之和
result <- apply(shuzu, c(3), sum)

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多