R学习-- 数组和矩阵
x = array(1:20, dim= c(4,5))
依據(jù)已知向量生成二維數(shù)組
i = array(c(1:3,3:1,4:6,5:7), dim=c(3,4))
也能夠調(diào)整行列順序 (3行4列變?yōu)?行3列)
i = array (c(1:3,3:1,4:6,7:9), dim=c(4,3))
數(shù)組a元素作為索引值操作數(shù)組b
i為一個(gè)二維數(shù)組,x[i]為x[i[1,1]],x[i[1,2]]...x[i[1,n]]...x[i[2,1]],x[i[2,2]]...x[i[n,n]]。比如
x[i] = 0 操作。就是將數(shù)組i中的元素取出為i[m,n],為x[i[m,n]]一一賦值。m∈[1,行數(shù)],n∈[1,列數(shù)]。
創(chuàng)建3*4矩陣。初始化每一個(gè)元素為0
b = matrix(0,3,4)
向矩陣最后加入一列
b = cbind(b,1:3)
向矩陣最后加入一行
a = matrix(c(1:9),3,3)
a = rbind(a,c(9,9,9))
將一個(gè)數(shù)組強(qiáng)制轉(zhuǎn)換成簡(jiǎn)單向量
vec=as.vector(a)
或者
vec=c(a)
矩陣(向量)相乘
crossprod(1:5,2:6)
創(chuàng)建表格
table(c(1:4), c(2:5))
基于數(shù)據(jù)向量與維度創(chuàng)建數(shù)組
z=array(c(1,2,3), dim=c(2,3,4))
基于數(shù)據(jù)向量<1,2,3>創(chuàng)建4組,3列兩行的表格
動(dòng)態(tài)調(diào)整維度
z=array(c(1,2,3), dim=c(2,3,4))
dim(z) = c(2,2,6)
z變成了6組,2列2行的表格
數(shù)組操作
a=array(c(1,2),dim=c(3,4))
b = 2*a+1
求向量a,b外積的函數(shù)
outer(c(1,2,3),c(3,2,1)) ?(等價(jià)于c(1,2,3)%o%c(3,2,1))
過(guò)程:
a :<1,2,3> ?
b :
<
3
2
1
>
向量a與b的外積:
1*3, 1*2, 1*1
2*3, 2*2, 2*1
3*3, 3*2, 3*1
還能夠把外積函數(shù)替換為其它函數(shù)(比如平方和)
outer(x,y,function(x,y)x*x+y*y)
使用plot繪制函數(shù)
比如y=x^2
x=c(1:20)
plot(x,x*x)
矩陣旋轉(zhuǎn)
a = matrix(c(1,2,3,4,5,6,7,8),2,4)
b = aperm(a,c(2,1))
過(guò)程:
a :
[1 3 5 7]
[2 4 6 8]
aperm(a, c(2,1)):
[1 2]
[3 4]
[5 6]
[7 8]
aperm(a)等價(jià)于t(a)
矩陣相乘
a = matrix(c(1,2,3,4,5,6,7,8),2,4)
b = matrix(c(2,2,2,2),4,1)
x = a %*% b
以上將完畢 2*4矩陣和4*1矩陣相乘
求方(矩)陣對(duì)角元素
a = matrix(c(1:9),3,3)
diag(a)
會(huì)取得 1,5,9
生成正太分布隨機(jī)數(shù)
rnorm(10)
查看矩陣維數(shù)
a= matrix(c(1:4),2,2)
dim(a)
改變矩陣維
dim(a) = c(1,4)
求方陣的行列式的值
det(matrix(rnorm(9),3,3))
求值過(guò)程 (對(duì)角線展開(kāi)):
[a(1,1), a(1,2), a(1,3)]
[a(2,1), a(2,2), a(2,3)]
[a(3,1), a(3,2), a(3,3)]
X = a(1,1)*a(2,2)*a(3,3)+a(2,1)*a(3,2)*a(1,3)+a(3,1)*a(2,3)*a(1,2)-a(1,3)*a(2,2)*a(3,1)-a(1,2)*a(2,1)*a(3,3)-a(1,1)*a(3,2)*a(2,3)
求逆矩陣
a = matrix(rnorm(9),3,3)
solve(a)
并不是每一個(gè)矩陣都可逆,弱為可逆矩陣,在初等變換的過(guò)程中,不會(huì)出現(xiàn)整行或整列所有為0的情況。
也能夠用det函數(shù)來(lái)推斷矩陣行列式的值,假設(shè)為0則不可逆。
求特征向量和特征值
a = matrix(c(1,2,1,2),2,2)
eigen(a)
eigen(a)$values
對(duì)于大型矩陣,能夠僅僅計(jì)算特征值
eigen(a, only.values = TRUE)$values
投影
a = matrix(c(1,2,1,2),2,2)
prod(a)
神秘值分解
svd(a)
依據(jù)已知向量計(jì)算最小二乘擬合
lsfit(c(1,2,3,4),c(2,3,4,3))
會(huì)求出直線的斜率和截距
對(duì)于本例:
Intercept(斜率) ? ? ? ? X(截距)?
[1,] ? ? ?-2.0 -5.0000000
[2,] ? ? ? 0.5 -2.2360680
[3,] ? ? ? 0.5 ?0.4472136
[4,] ? ? ? 0.5 ?0.8944272
實(shí)例 :
a = c(1,2,3,4)
b = c(1,3,4,5)
plot(a,b)
abline(lsfit(a,b))
或者 lm(a~b)
將矩陣QR分解。
Q:正交矩陣
R:上三角矩陣
a = matrix(c(1:9),3,3)
q = qr(a)
qr.Q(q)
? ? ? ? ? ?[,1] ? ? ? [,2] ? ? ? [,3]
[1,] -0.2672612 ?0.8728716 ?0.4082483
[2,] -0.5345225 ?0.2182179 -0.8164966
[3,] -0.8017837 -0.4364358 ?0.4082483
qr.R(q)
? ? ? ? ? [,1] ? ? ?[,2] ? ? ? ? ?[,3]
[1,] -3.741657 -8.552360 -1.336306e+01
[2,] ?0.000000 ?1.963961 ?3.927922e+00
[3,] ?0.000000 ?0.000000 ?1.776357e-15
另外,
> b <- qr.coef(Xplus, y)
> fit <- qr.fitted(Xplus, y)
> res <- qr.resid(Xplus, y)
會(huì)返回qr分解的系數(shù),擬合和殘差。
轉(zhuǎn)載于:https://www.cnblogs.com/jzssuanfa/p/7238935.html
總結(jié)
以上是生活随笔為你收集整理的R学习-- 数组和矩阵的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: struts2中配置文件的调用顺序
- 下一篇: 错误页跳转