R語言中向量和矩陣簡單運算的實現
一、向量運算
向量是有相同基本類型的元素序列,一維數組,定義向量的最常用辦法是使用函數c(),它把若幹個數值或字符串組合為一個向量。
1.R語言向量的產生方法
> x <- c(1,2,3) > x [1] 1 2 3
2.向量加減乘除都是對其對應元素進行的,例如下面
> x <- c(1,2,3) > y <- x*2 > y [1] 2 4 6
(註:向量的整數除法是%/%,取餘是%%。)
3.向量的內積,有兩種方法。
第一種方法:%*%
> x <- c(1,2,3) > y <- c(4,5,6) > z <- x%*%y > z [,1] [1,] 32
第二種方法:crossprod(x,y).
> x <- c(1,2,3) > y <- c(4,5,6) > z <- crossprod(x,y) > z [,1] [1,] 32
4.向量的外積 ,有三種方法。
第一種方法:%o%
> x <- c(1,2,3) > y <- c(4,5,6) > x%o%y [,1] [,2] [,3] [1,] 4 5 6 [2,] 8 10 12 [3,] 12 15 18
第二種方法:tcrossprod(x,y)
> x <- c(1,2,3) > y <- c(4,5,6) > tcrossprod(x,y) [,1] [,2] [,3] [1,] 4 5 6 [2,] 8 10 12 [3,] 12 15 18
第三種方法:outer(x,y)
> x <- c(1,2,3) > y <- c(4,5,6) > outer(x,y) [,1] [,2] [,3] [1,] 4 5 6 [2,] 8 10 12 [3,] 12 15 18
二、矩陣的運算
1. 矩陣的產生方式
> x <- matrix(1:9,3,3) > x [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9
其中第一個3表示的是行數,第二個3表示的列數。 故產生一個3*3的矩陣。這裡是將1到9按列排列,如果想按行排列,那麼如下代碼
> x <- matrix(1:9,3,3,byrow = TRUE) > x [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9
2.矩陣對應元素的運算
> x <- matrix(1:9,3,3) > y <- matrix(9:1,3,3) > x*y [,1] [,2] [,3] [1,] 9 24 21 [2,] 16 25 16 [3,] 21 24 9
3.矩陣的轉置
> x <- matrix(1:9,3,3) > x [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 > t(x) [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9
4.矩陣乘法
> x <- matrix(1:9,3,3) > y <- matrix(9:1,3,3) > x%*%y [,1] [,2] [,3] [1,] 90 54 18 [2,] 114 69 24 [3,] 138 84 30
5.矩陣 x乘y的轉置,x的轉置乘以y
> x <- matrix(1:9,3,3) > y <- matrix(9:1,3,3) > crossprod(x,y) [,1] [,2] [,3] [1,] 46 28 10 [2,] 118 73 28 [3,] 190 118 46 #這個是x的轉置乘以y > tcrossprod(x,y) [,1] [,2] [,3] [1,] 54 42 30 [2,] 72 57 42 [3,] 90 72 54 #這個是x乘以y的轉置
6.求矩陣的行列式、對稱矩陣的特征值、特征向量
> x <- matrix(1:9,3,3) > x [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 > det(x) [1] 0 #這個是求特征值的 > x <- matrix(1:9,3,3) > x [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 > a <- crossprod(x,x) > a1 <- eigen(a) #這個是得到對稱矩陣特征值、特征向量的主要函數 > a1 eigen() decomposition $`values` #這個是特征值 [1] 2.838586e+02 1.141413e+00 6.308738e-15 $vectors #這個是特征向量 [,1] [,2] [,3] [1,] -0.2148372 0.8872307 0.4082483 [2,] -0.5205874 0.2496440 -0.8164966 [3,] -0.8263375 -0.3879428 0.4082483
到此這篇關於R語言中向量和矩陣簡單運算的實現的文章就介紹到這瞭,更多相關R語言向量運算和矩陣運算內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- R語言技巧Rcpp與Eigen庫之間的相互轉換
- R語言matrix生成矩陣的方法
- R語言數據結構之矩陣、數組與數據框詳解
- R語言創建矩陣的實現方法
- R語言中矩陣matrix和數據框data.frame的使用詳解