- c:向量 x1=c(1,2,3,4) x2=c(1:100)
- length:查看向量的長度 length(x1)
- mode:查看數據類型mode(x1) numeric
rbind: 將向量以行的格式合併
x1=(1,2,3,4,5); x2=(2,3,4,5,6); rbind(x1,x2) 1,2,3,4,5 2,3,4,5,6
cbind:將向量以列的形式合併
x1=(1,2,3,4,5); x2=(2,3,4,5,6); cbind(x1,x2) 1 2 2 3 3 4 4 5 5 6
mean:求向量平均值
- sum:求和
- max:求最大值
- min:求最小值
- var:求方差
- sd:求標準差
- prod:連乘
- help:查詢幫助
關於向量的一些操作
- 對向量的加減乘除就是對每個元素的加減乘除
- a[1]:取出第一個元素
- a[-(1:5)]:不顯示1~5個元素
- a[c(2,4,7)]:顯示向量2,4,7個元素
- a[a<20]:顯示所有小於20的元素
- seq(5,20):以5位首項,最後一項爲20,1爲公差。
seq(5,20,by=2):公差爲2
seq(5,20,length=10):一共10項 - letters:字母向量,前26項放置26個小寫字母。
which:
which.max(a)返回a中最大值元素的下標 which.min(a) which(a==2) a[which(a==2)] which(a>5) a[which(a>5)]
rev:顛倒一個向量
- sort:排序一個向量,從小到大
matrix:沒有特殊指定按列放置
> a1=c(1:12) > matrix(a1,nrow=3,ncol=4) [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 > matrix(a1,nrow=4,ncol=3) [,1] [,2] [,3] [1,] 1 5 9 [2,] 2 6 10 [3,] 3 7 11 [4,] 4 8 12 > matrix(a1,nrow=4,ncol=3,byrow = T) [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 [4,] 10 11 12
矩陣轉置
> a=matrix(a1,nrow=4,ncol=3,byrow = T) > a [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 [4,] 10 11 12 > t(a) [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12
- 矩陣加減:對應位置元素的操作
矩陣相乘:
a*b:對應位置元素相乘 a%*%b:矩陣相乘 diag(a):返回矩陣對角線 diag(a):如果a爲向量,以該向量爲對角線構造矩陣 diag(4):產生4階單位矩陣
rnorm():按照正態分佈產生隨機數
rnorm(16):產生16個隨機數
solve():求逆矩陣,解方程組
> a=matrix(rnorm(16),4,4) > a [,1] [,2] [,3] [,4] [1,] -1.05965689 0.6143960 -0.8294148 -1.3061685 [2,] -1.60431219 -1.2030678 0.2292120 -1.4342218 [3,] 0.79135067 -0.3404548 -0.8149929 -0.8628479 [4,] 0.06815653 -1.1712486 -0.9934455 1.7037992 > solve(a) [,1] [,2] [,3] [,4] [1,] -0.341489771 -0.1637338 0.4876024 -0.1526864 [2,] 0.374155498 -0.3890995 -0.2724248 -0.1786631 [3,] -0.478976543 0.1730090 -0.2601989 -0.3533297 [4,] -0.008412508 -0.1600527 -0.3584953 0.2641942 解方程組 > b=c(1:4) > solve(a,b) [1] 0.1831044 -1.9359705 -2.3268738 -0.3472269
eigen:求矩陣特徵值
> a=diag(4)+1 > a [,1] [,2] [,3] [,4] [1,] 2 1 1 1 [2,] 1 2 1 1 [3,] 1 1 2 1 [4,] 1 1 1 2 > a.e=eigen(a,symmetric = T) > a.e $values [1] 5 1 1 1 $vectors [,1] [,2] [,3] [,4] [1,] -0.5 0.8660254 0.0000000 0.0000000 [2,] -0.5 -0.2886751 -0.5773503 -0.5773503 [3,] -0.5 -0.2886751 -0.2113249 0.7886751 [4,] -0.5 -0.2886751 0.7886751 -0.2113249
is.vector():判斷變量是否爲向量
is.array():判斷是否爲數組,數組是有維度的向量。矩陣可以看作二維數組。
> x=c(1:6) > x [1] 1 2 3 4 5 6 > is.vector(x) [1] TRUE > is.array(x) [1] FALSE > dim(x)<-c(2,3) > x [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > is.vector(x) [1] FALSE > is.array(x) [1] TRUE
data.frame:數據框,二維表單。矩陣和數組中,每個元素必須爲數值。數據框可以爲任意類型。
> x1=c(1:10) > y1=c(101,110) > x=data.frame(x1,y1) > x x1 y1 1 1 101 2 2 110 3 3 101 4 4 110 5 5 101 6 6 110 7 7 101 8 8 110 9 9 101 10 10 110 > x=data.frame('col1'=x1,'col2'=y1) > x col1 col2 1 1 101 2 2 110 3 3 101 4 4 110 5 5 101 6 6 110 7 7 101 8 8 110 9 9 101 10 10 110
plot:畫圖
- read.table:.prn以空格分割的文件格式
- read.csv:讀入csv文件
- 安裝RODBC,再通過ODBC讀
for語句:
> a=1 #init a > for(i in 1:59) a[i]=i*2+3 > a [1] 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 [21] 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 [41] 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121
while語句:
> a=5 > i=1 > while(a[i]<121){i=i+1;a[i]=a[i-1]+2} > a [1] 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 [21] 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 [41] 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121
source(‘x.r’):運行R腳本
分佈函數:
正態分佈函數rnorm() 泊松分佈函數rpois() 指數分佈函數rexp() Gamma分佈函數rgamma() 均勻分佈函數runif() 二項分佈函數rbinom() 幾何分佈函數rgeom() > x<-round(runif(10,min=80,max=100)) > x [1] 95 94 82 90 83 85 85 84 80 99 > x<-round(rnorm(10,mean=80,sd=7)) > x [1] 72 86 77 85 86 75 77 93 78 82
存儲數據:write.table()
colMeans:對列求平均值
colMeans(x)[c('x1','x2','x3')] #在指定的3列上求均值
apply:
apply(x,2,mean) #在x的列上求均值 apply(x[c('x1','x2','x3')],1,sum) #3列元素,每行求和
R 語言學習筆記(一)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.