- 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列元素,每行求和