1. 程式人生 > >4. 向量、矩陣和數組

4. 向量、矩陣和數組

函數類 pic 官方 peter 適合 開始 長度 索引數組 mes

4.1 向量

4.1.1 序列

除了使用冒號運算符之外,R還支持其他函數創建更為通用的序列。其中,seq函數最為常見,能以許多不同的方式指定序列。在平常使用中針對不同的場景,我們有以下三類函數可供使用,他們運行效率更高且更易用,滿足了特定場合的使用。

seq.int 可創建一個序列,序列的範圍由兩個數字指定,還可以設置步長,值得註意的是雖然seq.int以int結尾他同樣支持創建浮點數形式的序列,如

 seq.int(0.1,0.01,-0.01)
 [1] 0.10 0.09 0.08 0.07 0.06 0.05 0.04 0.03 0.02 0.01

seq_len函數:創建一個從1到輸入值的的序列

seq_along函數:創建一個從1開始,長度是輸入向量長度的序列

pp <- c( "peter", "piper", "picked", "a", "peck", "of", "pickled", "peppers" )
for( i in seq_along(pp) ) print(pp[i])
[1] "peter"
[1] "piper"
[1] "picked"
[1] "a"
[1] "peck"
[1] "of"
[1] "pickled"
[1] "peppers"

PS:在閱讀官方文檔後,如果不是特別追求運行效率或者你的序列特別長時,建議還是掌握seq()的使用方法

4.1.2 長度

我們可以通過length函數查到這個值。缺陷值也會被計入長度。

4.1.3 命名

R向量的一個大特性就是能給每個元素命名。通常,標記元素可使得代碼可讀性更強。

 x <- 1:4
 names(x) <- c( "apple", "bananas", "kiwi fruit", "" )
 x
     apple    bananas kiwi fruit            
         1          2          3          4 

4.1.4 索引向量

通常,我們只要訪問向量中的部分或個別元素。這就是所謂的索引,他用方括號[]實現。

1.若給向量傳入正數,它會返回此位置上的向量元素切片。他的第一個位置是1(同行python是0)  

2.若給向量傳入負數,它會返回一個向量切片,裏面只有除了負數絕對值位置上的所有元素

3.使用which函數可以返回邏輯向量為TRUE的位置,若將邏輯索引切換到整數索引中,這個函數將很有用

x <- (1:5)^2
which(x > 10)
[1] 4 5

4. which.min和which.max分別是which(min(x))和which(max(x))的縮寫

4.1.5 向量循環和重復

rep函數非常適合此類任務,它允許我們重復使用元素來創建矢量

rep(1:5, 3)
 [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

4.2 矩陣和數組

數組是多維的矩陣,所以除了行和列之外,數組還需要維度dim參數

4.2.1 創建數組和矩陣

數組:array()

矩陣:matrix()

4.2.2 行、列和維度

對於矩陣和數組,dim函數將返回其維度的整數值向量

對於矩陣而言,函數nrow和ncol將分別返回行數和列數

4.2.3 行名、列名和維度名

與輸出維度函數類型,顯示行名、列名和維度名的函數為rownames()、colnames()、dimnames()

4.2.4 索引數組

索引矩陣與索引向量類似。若要顯示所有元素,只需空置對應的下標即可

4.2.5 合並矩陣

可以使用cbind和rbind函數按行和列來綁定兩個矩陣

 cbind(a_matrix,another_matrix)    ##橫向合並
      ein zwei drei vier funf sechs
one     1    5    9    2   10    18
two     2    6   10    4   12    20
three   3    7   11    6   14    22
four    4    8   12    8   16    24
 rbind(a_matrix, another_matrix)  ##縱向合並
      ein zwei drei
one     1    5    9
two     2    6   10
three   3    7   11
four    4    8   12
five    2   10   18
six     4   12   20
seven   6   14   22
eight   8   16   24

4.2.6 矩陣算術

數組和矩陣支持標準算術運算符(+、-、×、/),除了這些矩陣還有如

轉置

t函數可用於轉置矩陣 t(a_matrix)

內乘

a_matrix  %*%  t(a_matrix)        ##內乘

外乘

1:3 %o% 4:6   #外乘,o為outer的含義

矩陣的逆

使用solve函數可以很簡單的實現矩陣的求逆

4. 向量、矩陣和數組