哈哈,闲来无事,木木童鞋报名参加了tigerfish老师为期12周的R语言学习的课程,不出意外的话我将在博客里记录这12周的学习过程,希望最后的学习能达到预期的效果。
好了闲话不多说,开始吧:
1、学习r语言的工具:
Rgui和安装方式:软件下载地址及安装指导:http://download.csdn.net/detail/changyanmanman/4375945
2、软件使用:向量、矩阵、数组、数据框
函数c():创建一个向量:x=c(1,3,4,2,5,7,6) ——查看x的内容:x 回车——查看x的类型:mode(x)——查看长度(即x里面元素的个数)length(x)——查看里面的最大值最小值范围range(x).——求x的中位数median(x) ;——mean(x)求平均值;
函数rbind() ,cbind() 矩阵合成;
sum(x)求和;
max() min()最大最小;
vax()求方差:var(x) = sum((x − mean(x))2)/(length(x) − 1).
prod()连乘;
sd()标准差;
产生向量:
>1:10 ——产生1到10的一个向量;>1:10-1 ——向量的每个项都减1; >1:20*2 ——向量每一项都乘2; >2:60*2+1 ——产生2到60的向量,每一项都先乘以2,然后加1.
>a=2:60*2+1 向量赋给a。 >a[5] 显示向量a中的第5个元素。>a[-5] 除了第5个元素不显示,其他都显示出来
>a[1:5] 显示向量中的第1到第5个元素。 同理:>a[-(1:5)] 除了1到5这几个元素不显示,其他的都显示。
注意:a[1,2,3] 这个格式是不对的。a[c(2,4,7)]显示第2,4,7个元素。 a[3:8]第3到第8个元素。a[a<20] 列出小于20的元素。
seq() 函数:按照指定指定的方式产生向量
seq(5,20) 产生从5到20的一个向量,默认公差是1。 seq(5,121 by=2) 产生5到121的一个向量,公差定义为2。seq(5,121,length=10)产生一个长度等于10的向量,公差由R自己算。
letters[1:30] 产生字母向量的函数。
which()函数: which.max(a);which.min(a) ——a向量中最大最小的下标。
求a向量中最大的元素:a[which.max(a) ] 中括号内部返回的下标,最后返回最大值。which(a==2) 返回a向量中值等于2的下标。
a[which(a==2)] 。 which(a>5) 。。a[which(a>5)]...很简单了哈。。
rev()和 sort()函数:
rev():把一个向量倒叙。。
sort() 从小到大排序。。 rev(sort(a))正序排列a;
matrix()函数:
生成矩阵函数;matrix(al,nrow=3,ncol=4) 生成3行4列的矩阵,默认从列开始数。
如果是:matrix(al,nrow=4,ncol=3 byrow=T) 表示按行开始数。
函数t() :矩阵转置函数:
a是一个矩阵:a+b ; a-b :对应的元素相加减。
函数diag(): 求对角线,对于一个方阵a,diag(a) 可以返回a的对角线。diag(4) 构建一个4阶矩阵,对角线都为1,其余的为0.
可以用向量来作为对角线形成对角线矩阵:diag(b) b是向量,而不是矩阵。
矩阵求逆,函数rnorm() , solve():
rnorm(12)产生正态分布的向量。
solve(): 求逆矩阵;
solve()函数求解方程组:
矩阵相乘:
数组:
判断是不是向量:>is.vector(x) 判断是不是数组:>is.array(x)
如何把向量变成数组呢?加上维度:dim(x)<-c(2,3) 现在就变成了一个2行3列的数组了。也是一个矩阵。矩阵是数组的一个特殊情况。因为数组可以有三维四维。。。等多维。
数据框:
数据框与数组(矩阵)的不同就是数据框每一列数据类型可以不同,而数组必须全部是数值的。
可以把俩个长度相同的向量(向量的数据类型可以不同)用一个函数data.frame(x1,x2) 生成一个数据框。还可以替换列头:data.frame('重量'=x1,'运费'=x2);
画散点图:plot(x)
循环语句:
for(i in 1:60) { a[i]=i*2+3 }
while(a[i]<121) {i=i+1; a[i]=a[i-1]+2 }
3、R脚本
source() 运行脚本函数:如source("test.r") 这就运行了工作目录下的r程序脚本test.r 如果目录在d盘根目录,应该这样写:
source("d:\\test.r") 注意是两个反斜杠,不是一个,因为一个是转义字符。
print() 打印函数:一般在命令窗口直接可以输入向量就可以打印,但是在脚本里是需要print()函数的。
4、综合习题
正态分布函数rnorm( )
泊松分布函数rpois( )
指数分布函数rexp( )
Gamma分布函数rgamma( )
均匀分布函数runif( )
二项分布函数rbinom( )
几何分布函数rgeom( )