R语言学习笔记内附实例及代码.docx
《R语言学习笔记内附实例及代码.docx》由会员分享,可在线阅读,更多相关《R语言学习笔记内附实例及代码.docx(31页珍藏版)》请在冰豆网上搜索。
R语言学习笔记内附实例及代码
--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--
R语言学习笔记-内附实例及代码(总18页)
R语言入门
R是开源的统计绘图软件,也是一种脚本语言,有大量的程序包可以利用。
R中的向量、列表、数组、函数等都是对象,可以方便的查询和引用,并进行条件筛选。
R具有精确控制的绘图功能,生成的图可以另存为多种格式。
R编写函数无需声明变量的类型,能利用循环、条件语句,控制程序的流程。
R网络资源:
R主页:
R资源列表NCEAS
RGraphicalManual
统计之都:
QuikR
丁国徽的R文档:
R语言中文论坛
一、用函数(),
[直接输入就可以联网,第一次的话之后选择镜像,然后选择包下载即可]
如果已经连接到互联网,在括号中输入要安装的程序包名称,选择镜像后,程序将自动下载并安装程序包。
例如:
要安装picante包,在控制台中输入("picante")已经安装了
二.安装本地zip包
路径:
Packages>installpackagesfromlocalfiles选择本地磁盘上存储zip包的文件夹。
(文件,运行R的脚本,选择所在文档)
三.调用程序包
在控制台中输入如下命令library(“picnate”)
程序包内的函数的用法与R内置的基本函数用法一样。
四.程序包内部都有哪些函数分别有什么功能
查询程序包内容最常用的方法:
1菜单帮助>Html帮助;
2查看pdf帮助文档
五.查看函数的帮助文件
函数的默认值是什么怎么使用使用时需要注意什么问题需要查询函数的帮助。
1直接打开相关函数的说明和使用模板。
2RGui>Help>Htmlhelp同样的效果,同上
3apropos("")合理使用T检验,五种模式的T检验
4help("")帮助同1-2
5("")有关T检验的一切东西都可以查出来。
6查看R包pdf手册
六、帮助很强大
•lm{stats}#函数名及所在包
•FittingLinearModels#标题
•Description#函数描述
•Usage#默认选项
•Arguments#参数
•Details#详情
•Author(s)#作者
•References#参考文献
•Examples#举例
七、R图形界面:
Rcommander
•1安装Rcommander
("Rcmdr")
•2R将自动下载并安装Rcmdr所需的所有程序包
调用RCommander
图12Rcommander界面library(Rcmdr)
八、R的函数
R是一种解释性语言,输入后可直接给出结果。
功能靠函数实现。
函数形式:
函数(输入数据,参数=)
如果没有指定,则参数的以默认值为准。
例如:
平均值mean(x,trim=0,=FALSE,...)
线性模型lm(y~x,data=test)
每一个函数执行特定的功能,后面紧跟括号,例如:
平均值mean();求和sum();绘图plot();排序sort()。
除了基本的运算之外,R的函数又分为”高级”和”低级”函数,高级函数可调用低级函数,这里的”高级”函数习惯上称为泛型函数。
如plot()就是泛型函数,可以根据数据的类型,调用底层的函数,应用相应的方法绘制相应的图形。
这就是面向对象编程的思想。
查询的方法:
Help>Htmlhelp>packages
log()
log10()
exp()
sin()
cos()
tan()
asin()
acos()
()
()
()
()
mean()
sd()
var()
glm(y~x1+x2+x3,binomial)
….
九、赋值与注释与对象起名
<-右边的值赋值给左边的变量或者对象;#注释注释部分不会编译
R处理的所有数据、变量、函数和结果都以对象的形式保存。
1.区分大小写,注意China和china的不同。
2.不能用数字作为变量,对象也不能用数字开头,但是数字可以放在中间或结尾,如2result与result2,后者是合法的。
3.建议不要用过短的名称。
可以用”.”作为间隔,例如。
4.不要使用保留名:
NA,NaN,pi,LETTERS,letters,,
十、元素与对象的类
1.对象是由各元素组成的。
每个元素,都有自己的数据类型。
2.元素种类
数值型Numeric如100,0,
字符型Character如“China”
逻辑型Logical如TRUE,FALSE
因子型Factor表示不同类别
复数型Complex如:
2+3i
3.对象的类class:
因子(factor)因子是一个分类变量c("a","a","b","b","c")
向量(vector)一系列元素的组合。
如c(1,2,3);c("a","a","b","b","c")
矩阵(matrix)二维的数据表,是数组的一个特例:
x<-1:
12;dim(x)<-c(3,4)
[,1][,2][,3][,4]
[1,]14710
[2,]25811
[3,]36912
数组(array)数组是k维的数据表(kin1:
n,n为正整数)。
向量(n=1)矩阵(n=2)高维数组(n>=3)
数据框(dataframe)是由一个或几个向量和(或)因子构成,它们必须是等长的,但可以是不同的数据类型。
每个数据表可以看作一个数据框(dataframe)。
每一行(row)作为一个记录(entry),每一列(column)作为一个向量(vector)。
由很多不同类型的向量组成,如字符型,因子型,数值型。
如何生成数据框两种办法:
(1)从外部数据读取;
(2)各类型因子组合成数据框。
列表(list)列表可以包含任何类型的对象。
可以包含向量、矩阵、高维数组,也可以包含列表。
十一、运算符
数学运算运算后给出数值结果:
+,-,*,/,^(幂)
比较运算运算后给出判别结果:
(TRUEFALSE):
>,<,<=,>=,==(==是计算机编程的二元运算符。
当左边的内容与右边的内容相同时,返回1。
其余时候返回0。
==是判断两个值大小是否相同的运算符。
),!
=不等于
逻辑运算与、或、非:
!
&,&&,|,||
十二、数据的读取
1.最为常用的数据读取方式是用()函数或()函数读取外部txt或csv格式的文件。
txt文件,制表符间隔;csv文件,逗号间隔。
一些R程序包(如foreign)也提供了直接读取Excel,SAS,dbf,Matlab,spss,systat,Minitab文件的函数。
的使用
例:
<("D:
/R/",header=T)header=T表示将数据的第一行作为标题。
(file=(),header=T)可以弹出对话框,选择文件。
3.数据量较大时用函数从外部txt文件读取
第1步将Excel中的数据另存为.txt格式(制表符间隔)或.csv格式。
第2步用()或()函数将数据读入R工作空间,并赋值给一个对象。
4.例子:
mydataframe<("F:
/KAGGLE1/",header=F)
命名读取函数数据位置文件夹名称是否读取头(T/F)
十三、向量、矩阵和数据框的创建
有时需要对读入的数据进行操作,将某一向量转换成矩阵,如条件筛选,此时将遇到向量、矩阵和数据框的生成、条件筛选等。
四种类型的向量:
字符型character<-c("China","Korea","Japan","UK","USA","France","India","Russia");
数值型numeric<-c(1,3,6,7,3,8,6,4);逻辑型logical<-c(T,F,T,F,T,F,F,T);
复数型略。
创建向量——用X<-c()函数或者c(),rep(),seq(),”:
”
c(2,5,6,9)
rep(2,times=4)
seq(from=3,to=21,by=3)
[1]36912151821
“:
”1:
15#意思是[1]123456789101112131415
通过与向量的组合,产生更为复杂的向量。
rep(1:
2,c(10,15))
向量创建——产生随机数
runif(10,min=0,max=1)rnorm(10,mean=0,sd=1)
几个随机数的相关函数
概率密度dunif(x,min=0,max=1,log=FALSE)
累积函数punif(q,min=0,max=1,…)
分位数qunif(p,min=0,max=1,…)
随机均匀分布runif(n,min=0,max=1)
2.矩阵的创建
生成矩阵的函数dim()和matrix()
dim()定义矩阵的行列数,例如:
x<-1:
12
dim(x)<-c(3,4)
[,1][,2][,3][,4]
[1,]14710
[2,]25811
[3,]36912
<-matrix(1:
12,nrow=3,byrow=T)
t(x)#转置为行或列添加名称:
()()
3.数据框的创建
创建数据框的函数:
(),cbind(),rbind()
cbind()#按列组合成数据框
rbind()#按行组合成数据框
()#生成数据框
head()#默认访问数据的前6行
4.列表的创建
列表可以是不同类型甚至不同长度的向量(数值型,逻辑型,字符型等等)、数据框甚至是列表的组合。
list()例如list(character,numeric,logical,
十四、对象类的判断与转换
对象类型判断:
mode()判断存储的类型class()判断数据的类
根据数据的类,采用相应的处理方法。
以下函数,主要用在函数处理异常时使用,目的是增强程序的稳健性。
类型判断
()#返回值为TRUE或FALSE
()#是否为逻辑值
()#是否为字符串
()#是否为空
()#是否为na
类的转换
()#转换为数值型
()#转换为逻辑型
()#转换为字符串
()#转换为矩阵
#转换为数据框
()#转换为因子
十五、元素引用与访问
1.向量内的元素引用
###Dalgaard书中的例子
<-c(5260,5470,5640,6180,6390,6515,6805,7515,7515,8230,8770)
<-c(3910,4220,3885,5160,5645,4680,5265,5975,6790,6900,7335)
[5];#引用第5个元素
[c(3,5,7)]#引用第3,5,7个元素
v<-c(3,5,7);[v];
[1:
5];#引用第1到5个元素
[-c(3,5,7)]#去除第3,5,7元素
2.数据框内元素的引用
intake<-,
引用数据框中的元素
(1)$引用列,后面为列的名称
例如intake$
(2)[,]方括号引用,逗号前为行,逗号后为列
intake[,1];引用第1列
intake[5,];引用第5行
intake[5,1];引用第1列,第5行
i=1:
5;intake[i,]引用1到5行
3.列表内元素的引用
列表内元素的引用可以用”[[]]”如list1[[c(1,2,3)]]
上述放于”[]”内的数字,称为下标。
通过下标的变化,可以方便的访问向量、数据框、矩阵、列表内的各元素。
熟悉下标的用法对掌握循环结构是非常重要的。
4.访问数据框内的元素
直接调用数据框内的列,以列的名称作为向量的名称
attatch()
detatch()
在函数内部,对数据进行相应调整
with()#with函数内部形成一个空间,在这个空间中,函数可以对列访问。
within()
transform()#数据的转换,如取log
subset()#取数据的子集
apply()#对数据表或矩阵应用某个函数,可减少循环
十六、条件筛选与排序
1.条件筛选
条件筛选是先对变量否满足条件进行判断,满足为TRUE,不满足为FALSE。
之后再用逻辑值对向量内的元素进行筛选。
>7000
[1]FALSEFALSEFALSEFALSEFALSEFALSEFALSETRUETRUETRUETRUE
[>7000]
>7000&<=8000
[1]FALSEFALSEFALSEFALSEFALSEFALSEFALSETRUETRUEFALSEFALSE
[>7000&<=8000]
2.排序
将向量中的元素按照一定顺序排列。
sort()按数值大小排序
举例:
intake$
sort(intake$
order()默认给出从小到大的出现序号。
order(intake$post)
o<-intake[order(intake$,]
十七、工作路径(工作空间、历史)
1.工作空间P10
R的所有对象都在计算机内存的工作空间中。
ls()#列出工作空间中的对象
rm()#删除工作空间中的对象
rm(list=ls())#删除空间中所有对象
()#保存工作镜像
sink()#将运行结果保存到指定文件中
getwd()#显示当前工作文件夹
setwd()#设定工作文件夹
2.输入历史History
•输入的命令,在R中作为历史history保存,可输入函数
•history()#查看输入历史
•history(Inf)#查看打开R之后所有的输入
•可用向上或向下的箭头切换输入的行。
十八、脚本编程Scripting
1.脚本语言
脚本语言(scriptinglanguage)又称动态语言,是依靠解释器完成相应的功能的一类计算机语言,通常以ASCII码的文本格式保存源程序。
特点
脚本语言语法和结构通常比较简单,不需要编译,通过解释器对脚本进行解释,从而给出结果,能用简单的代码完成复杂的功能,但是速度较慢。
常见的脚本语言
Windows批处理程序,PHP,Perl,Python,Ruby,JavaScript等。
2.集成开发环境
很多计算机语言都有IDE(integrateddevelopmentenvironment),即集成开发环境,如Windows的VisualStudio,VisualBasic等等。
但是R通常无需集成开发环境,脚本在一般的文本编辑器里即可编辑。
如Windows自带的记事本,Notepad++,UltraEdit,TinnR。
Linux下的Vi,Vim,Emacs等等。
在代码较多的情况下,常需要对行数、函数、括号、函数选项等进行高亮显示,设置成不同的颜色,以减少错误的发生。
3.编辑器
R自带的脚本编辑器
Editplus()
TinnR()
Ultraedit()
Emacs()
Notepad++与NpptoR组合
()
记事本或写字板等等
十九、R绘图
R具备卓越的绘图功能,通过参数设置对图形进行精确控制。
绘制的图形能满足出版印刷的要求,可以输出Jpg、tiff、eps、emf、pdf、png等各种格式。
通过与GhostScript软件的结合,可以生成600dpi,1200dpi的等各种分辨率和尺寸的图形。
绘图是通过绘图函数结合相应的选项完成的。
绘图函数包括高级绘图函数和低级绘图函数。
1.高级绘图函数:
plot()
绘制散点图等多种图形,
根据数据的类,调用相应的函数绘图
hist()
频率直方图
boxplot()
箱线图
stripchart()
点图
barplot()
柱状图
dotplot()
点图
piechart()
饼图
matplot()
数学图形
2.低级绘图函数:
lines()
添加线
curve()
添加曲线
abline()
添加给定斜率的线
points()
添加点
segments()
折线
arrows()
箭头
axis()
坐标轴
box()
外框
title()
标题
text()
文字
mtext()
图边文字
3.绘图参数
参数用在函数内部,在没有设定值时使用默认值。
font=字体,lty=线类型,lwd=线宽度,pch=点的类型,
xlab=横坐标,ylab=纵坐标,xlim=横坐标范围,ylim=纵坐标范围,
也可以对整个要绘制图形的各种参数进行设定,参见par()
4.分步绘图
1.打开绘图窗口,不绘制任何对象
plot(x,y,type="n",xlab="",ylab="",axes=F)
2.添加坐标点points(x,y)
3.添加坐标轴
axis
(1);axis(at=seq,,,side=2)
4.补齐散点图的边框box()
5.添加标题、副标题、横轴说明、纵轴说明
title(main="Maintitle",sub="subtitle",xlab="x-label",ylab="y-label")
5.在原有图形上添加元素
举例:
x<-rnorm(100)#生成随机数
hist(x,freq=F)#绘制直方图
curve(dnorm(x),add=T)#添加曲线
h<-hist(x,plot=F)#绘制直方图
ylim<-range(0,h$density,dnorm(0))#设定纵轴的取值范围
hist(x,freq=F,ylim=ylim)#绘制直方图
curve(dnorm(x),add=T,col="red")#添加曲线
二十、编写函数
1.编程基础
R可以灵活的编写程序,用户自己编写的程序可以直接调用。
编程时无需声明变量的类型,这与C,C++等语言不同。
基本格式:
函数名<-function(数据,参数1=默认值,…)
{
异常处理;
表达式(循环/判别);
return(返回值);
}
函数内部也可用#添加注释
2.函数实例:
data2mat()
3.程序流程控制
条件if
if(条件)表达式
if(条件)表达式1else表达式2
举例:
p={
if(p<=print("p<=!
")
elseprint("p>!
")
}
循环for,while
for(变量in向量)表达式
用法:
for(iin1:
10)print(i)
while(条件)表达式
用法:
i<-1
while(i<10){print(i);i<-i+1}
返回值
•返回值表示函数输出的结果。
•返回值必须是一个对象。
•R默认将最后一行作为返回值。
•如果函数的结果需要有多个返回值,可以创建一个list(),并返回该对象。
•也可以用return()函数,设定返回值。
•但是一个函数的返回的对象只有一个。
异常处理
•如数据输入不能满足要求,或者参数设定错误等等,可能造成函数给出错误的结果,则需要对函数的运行过程发出警告或终止,以提高程序的稳健性。
•警告的写法
if(any(inputdata)))
inputdata<-(inputdata)
cat(“NAsarefoundintheinputdata,andhasbeenremoved.\n")
•终止的写法if(any(xx)))stop("NAsarenotallowed!
\n")
函数举例:
问题:
输入直角三角形的两个边长,求其斜边长。
定义函数:
rcal<-function(x,y){
z<-x^2+y^2
result<-sqrt(z)
return(result)
}
调用函数:
rcal(3,4)
二十一、数据保存
()
()
()
sink()
unlink()
若有LaTeX基础,可以用:
Sweave()函数
该函数能将脚本、程序说明和运算结果直接保存成.tex文件,用LaTeX编译成pdf文件。
代码与实际操作
1.(<-("arrg")赋值
(an)#TRUE判断是否是name格式属性
mode(an)#namean的模式是什么
typeof(an)#symbolan的数据类型是什么symbol
2.现有6名患者的身高和体重,检验体重除以身高的平方是否等于。
(从数据输入到t检验)
编号
1
2
3
4
5
6
身高m
体重kg
60
72
57
90
95
72
代码:
height<-c,,,,,
weight<-c(60,72,57,90,95,72)
number_1<-1:
6
X<-(weight/height^2)
(X,mu=
#结果显示
OneSamplet-test
data:
X
t=,df=5,p-value=
alternativehypothesis:
truemeanisnotequalto
95percentconfidenceinterval:
sampleestimates:
meanofx
height<-c,,,,,
weight<-c(60,72,57,90,95,72)
<-height^2
ratio<-weight/
(ratio,mu=
#结果显示
OneSamplet-test
data:
ratio
t=,df=5,p-value=
alternativehypothesis:
truemeanisnotequalto
95percentconfidenceinterval:
sampleestimates:
meanofx
T检验的原假设是U≠0或者U1≠U2,α=水平的话,P>,不能拒绝原假设,也就是说U1不等于U2统计学上是支持的。
T检验单侧与双侧