R語言矩陣基礎操作
將z陣列作為10*10矩陣看待
> z
> attr(z,"dim")
> z
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 11 21 31 41 51 61 71 81 91
[2,] 2 12 22 32 42 52 62 72 82 92
[3,] 3 13 23 33 43 53 63 73 83 93
[4,] 4 14 24 34 44 54 64 74 84 94
[5,] 5 15 25 35 45 55 65 75 85 95
[6,] 6 16 26 36 46 56 66 76 86 96
[7,] 7 17 27 37 47 57 67 77 87 97
[8,] 8 18 28 38 48 58 68 78 88 98
[9,] 9 19 29 39 49 59 69 79 89 99
[10,] 10 20 30 40 50 60 70 80 90 100
> b
> b
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14
[15] 15 16 17 18 19 20 21 22 23 24 25 26 27 28
[29] 29 30 31 32 33 34 35 36 37 38 39 40 41 42
[43] 43 44 45 46 47 48 49 50 51 52 53 54 55 56
[57] 57 58 59 60 61 62 63 64 65 66 67 68 69 70
[71] 71 72 73 74 75 76 77 78 79 80 81 82 83 84
[85] 85 86 87 88 89 90 91 92 93 94 95 96 97 98
[99] 99 100
z有1500個元素組成的向量,下面語句使他具有dim屬性,並且被當作3*5*100的陣列進行處理。
dim(z)
如果在任何下標給出空值,意味著選擇這個下標的所有值。
除了賦予一個向量dim屬性外,還可以用array來從向量構建陣列。
> b
> b
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
資料外積操作。維數向量和有原陣列連線而成,屬性和操作屬性有關。資料向量有a的所有向量和b的所有向量的所有可能乘機產生
> a
[1] 1 2 3 4 5
> b
> b
[1] 10 11 12 13 14 15
> ab
> ab
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 10 11 12 13 14 15
[2,] 20 22 24 26 28 30
[3,] 30 33 36 39 42 45
[4,] 40 44 48 52 56 60
[5,] 50 55 60 65 70 75
cd
陣列的廣義轉置 :我理解就是維度變換,不過對於多為怎麼換還是不好理解。
> cd
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 10 11 12 13 14 15
[2,] 20 22 24 26 28 30
[3,] 30 33 36 39 42 45
[4,] 40 44 48 52 56 60
[5,] 50 55 60 65 70 75
如果A和B同樣大小的方陣,那麼結果即使對應元素的乘機。
> ab *cd
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 100 121 144 169 196 225
[2,] 400 484 576 676 784 900
[3,] 900 1089 1296 1521 1764 2025
[4,] 1600 1936 2304 2704 3136 3600
[5,] 2500 3025 3600 4225 4900 5625
> e
> e
[,1] [,2] [,3] [,4] [,5]
[1,] 10 20 30 40 50
[2,] 11 22 33 44 55
[3,] 12 24 36 48 60
[4,] 13 26 39 52 65
[5,] 14 28 42 56 70
[6,] 15 30 45 60 75
> f
> f
[,1] [,2] [,3] [,4] [,5]
[1,] 10 20 30 40 50
[2,] 11 22 33 44 55
[3,] 12 24 36 48 60
[4,] 13 26 39 52 65
[5,] 14 28 42 56 70
[6,] 15 30 45 60 75
> f 陣列行列
[,1] [,2] [,3] [,4] [,5]
[1,] 10 20 30 40 50
[2,] 11 22 33 44 55
[3,] 12 24 36 48 60
[4,] 13 26 39 52 65
[5,] 14 28 42 56 70
[6,] 15 30 45 60 75
> nrow(f)
[1] 6
> ncol(f)
[1] 5
a %*% B 是矩陣乘積,1*n陣列和n*1陣列可以看作是一個n維向量。
> a
> b
> a %*% b
[,1]
[1,] 55
> a
[1] 1 2 3 4 5
> b
[1] 1 2 3 4 5
> crossprod(a,b)
[,1]
[1,] 55
> t(a) %*% b
[,1]
[1,] 55
猜測,只是不知道如何解釋他們的現實意義。
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
1+4+9 +16 +25 = 55
線性方程和矩陣的轉:求解線性方程是矩陣乘法的逆運算。
solve(c) 程式碼1/c c的倒數。會損失精度。
> a
> b
> c
> c
[,1]
[1,] 50
> solve(a,c)
[,1]
[1,] 5
最小二乘擬合結果lsfit返回
lsfit(X,y) 其中X為設計矩陣,y是觀測值向量
rbind、cbind矩陣組合,在dim(維度)上鍊接,有些限制,要對齊。文件叫構建分割槽矩陣。
c函式忽略維度,直接連線,想試連結串列。
> a
> b
> cbind(a,b)
a b
[1,] 1 21
[2,] 2 22
[3,] 3 23
[4,] 4 24
[5,] 5 25
[6,] 6 26
[7,] 7 27
[8,] 8 28
[9,] 9 29
[10,] 10 30
> rbind(a,b)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
a 1 2 3 4 5 6 7 8 9 10
b 21 22 23 24 25 26 27 28 29 30
> c(a,b)
[1] 1 2 3 4 5 6 7 8 9 10 21 22 23 24 25 26 27 28 29
[20] 30
說明:state陣列和incomes具有相同元素
> state
> statef
> statef
[1] tas sa qld nsw nsw nt wa wa qld vic nsw vic qld qld
[15] sa tas sa nt wa vic qld nsw nsw wa sa act nsw vic
[29] vic act
Levels: act nsw nt qld sa tas vic wa
> levels(statef)
[1] "act" "nsw" "nt" "qld" "sa" "tas" "vic" "wa"
> incomes
+ 61, 61, 61, 58, 51, 48, 65, 49, 49, 41, 48, 52, 46,
+ 59, 46, 58, 43)
>
> incomes
[1] 60 49 40 61 64 60 59 54 62 69 70 42 56 61 61 61 58 51 48
[20] 65 49 49 41 48 52 46 59 46 58 43
> incmeans
> incmeans
act nsw nt qld sa tas vic wa
44.50000 57.33333 55.50000 53.60000 55.00000 60.50000 56.00000 52.25000
> stderr
> stderr
function(x) sqrt(var(x)/length(x))
> incster
> incster
act nsw nt qld sa tas vic wa
1.500000 4.310195 4.500000 4.106093 2.738613 0.500000 5.244044 2.657536
> statefr
>
> statefr
>
> factor(cut(incomes, breaks = 35+10*(0:7))) -> incomef
> table(incomef,statef)
statef
incomef act nsw nt qld sa tas vic wa
(35,45] 1 1 0 1 0 0 1 0
(45,55] 1 1 1 1 2 0 1 3
(55,65] 0 3 1 3 2 2 2 1
(65,75] 0 1 0 0 0 0 1 0
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15711267/viewspace-1062867/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C語言基礎-1、陣列C語言陣列
- 社交網路分析的 R 基礎:(三)向量、矩陣與列表矩陣
- 社交網路分析的 R 基礎:(一)初探 R 語言
- 【scipy 基礎】--稀疏矩陣矩陣
- R語言進行基礎統計分析(一)R語言
- Go 語言基礎 陣列、切片、對映Go陣列
- 用C語言輸出蛇形矩陣C語言矩陣
- Lasso迴歸及其R語言操作R語言
- pytorch基礎七(矩陣運算)PyTorch矩陣
- C語言實現矩陣螺旋輸出C語言矩陣
- 組合語言實驗1—Debug基礎操作組合語言
- 人工智慧數學基礎—-矩陣人工智慧矩陣
- 人工智慧數學基礎----矩陣人工智慧矩陣
- r語言R語言
- 【R語言入門】R語言環境搭建R語言
- C語言基礎C語言
- dart語言基礎Dart
- 矩陣:如何使用矩陣操作進行 PageRank 計算?矩陣
- SQL語言基礎(資料控制語言)SQL
- R 語言使用
- python程式語言基礎Python
- Go語言基礎-序言Go
- c語言的基礎C語言
- e語言基礎01
- 【01】C語言基礎C語言
- 【Go語言基礎】sliceGo
- Julia語言程式基礎
- SQL語言基礎(SELECT語句)SQL
- 圖的深度遍歷(C語言)鄰接矩陣表示C語言矩陣
- Go語言基礎語法總結Go
- C語言:求4x4矩陣外圍元素之和C語言矩陣
- Gradle 之語言基礎 GroovyGradle
- c語言基礎知識C語言
- D程式語言基礎篇
- C語言入門基礎C語言
- c語言基礎學習C語言
- C語言基礎函式C語言函式
- C語言基礎-指標C語言指標
- [06 Go語言基礎-包]Go