- 1. 语言入门一 R 软件简介
二 数字、字符与向量
三 对象和它的模式与属性
四 因子五 多维数组和矩阵
六 列表与数据框
七 编写函数
八 R 绘图
- 2. 一 R 软 件 简 介
- 3. R语言的由来R语言是从S语言演变而来的。
S语言是二十世纪70年代诞生于贝尔实验室,由Rick Becker, John Chambers, Allan Wilks开发。
基于S语言开发的商业软件Splus,可以方便的编写函数、建立模型,具有良好的扩展性,取得了巨大成功。
1995年由新西兰Auckland大学统计系的Robert Gentleman和Ross Ihaka,编写了一种能执行S语言的软件,并将该软件的源代码全部公开,这就是R软件,其命令统称为R语言。
- 4. R软件简介 R是开源软件,代码全部公开,对所有人免费。
R可在多种操作系统下运行,如Windows、Linux和UNIX等。
R需要输入命令,可以编写函数和脚本进行批处理运算,语法简单灵活。
目前在R网站上约有两千多个程序包,涵盖了基础统计学、社会学、经济学、生态学、地理学、医学统计学、生物信息学等诸多方面。
- 5. 下载和安装RThe Comprehensive R Archive Network
简称CRAN,提供下载安装程序和相应软件包。
R主页 http://www.r-project.org/
- 6. R软件首页 http://www.r-project.org/
- 7. R登陆界面(Windows版)菜单栏快捷按钮控制台命令行
- 8. R Gui 的菜单介绍
- 9. R程序包为什么要安装程序包?
特定的分析功能,需要用相应的程序包实现。
例如:系统发育分析,往往要用到ape程序包,群落生态学vegan包等等。
程序包是什么?
R程序包是多个函数的集合,具有详细的说明和示例。
Window下的R程序包是已经编译好的zip包。
每个程序包包含R函数、数据、帮助文件、描述文件等。
- 10. 常用R程序包base- R 基础功能包
stats- R统计学包
nlme- 线性及非线性混合效应模型
Graphics- 绘图
lattice- 栅格图
ape- 系统发育与进化分析
apTreeshape- 进化树分析
seqinr- DNA序列分析
ade4- 利用欧几里得方法进行生态学数据分析
- 11. 常用R程序包cluster- 聚类分析
ecodist- 生态学数据相异性分析
mefa- 生态学和生物地理学多元数据处理
mgcv- 广义加性模型相关
mvpart- 多变量分解
nlme- 线性及非线性混合效应模型
ouch- 系统发育比较
BiodiversityR - 基于Rcmdr的生物多样性数据分析
vegan- 植物与植物群落的排序,生物多样性计算
- 12. 常用R程序包maptools- 空间对象的读取和处理
sp- 空间数据处理
spatstat- 空间点格局分析,模型拟合与检验
splancs- 空间与时空点格局分析
picante- 群落系统发育多样性分析
- 13. 程序包使用在菜单栏程序包选择加载程序包…
或者在控制台中输入如下命令:
library() ####()内为程序包名称
调用程序包内的函数与R内置的函数调用方法一样
- 14. 查看帮助文件如何知道stats程序包内部都有哪些函数?
最常用的方法:
1 菜单 帮助>Html帮助
2控制台中输入library(help="stats")
- 15. 查看帮助文件 1 help("t.test")
2 ?t.test
3 help.search("t.test")
4 apropos("t.test")
5 RGui>Help>R函数帮助(文本) …
- 16. 二 数字、字符与向量
- 17. 赋值与注释在控制台中键入如下命令
2+2
a<-2
<-也可用=, ->代替
b<-2
c<-a+b
c #注释赋值符号
- 18. (本页无文本内容)
- 19. 向量的运算数学运算 运算后给出数值结果
+, -, *, /, ^
比较运算 运算后给出判别结果(TRUE FALSE)
>, <, <=, >=, ==, !=
逻辑运算 与、或、非
!, &, &&, |, ||
- 20. 向量的运算
- 21. R的函数每一个函数执行特定的功能,后面紧跟括号,例如:
求和 sum()
绘图 plot()
排序 sort()
除了基本的运算之外,R的函数又分为高级和低级函数,高级函数内部嵌套了复杂的低级函数,例如plot()是高级绘图函数,函数本身会根据数据的类型,经过程序内部的函数判别之后,绘制相应类型的图形,并有大量的参数可选择。
- 22. 部分函数计算
log(x) log10(x)
exp(x) sin(x)
cos(x) tan(x)
asin(x) acos(x)
min(x) max(x)
range(x)
length(x)统计检验
mean(x) sd(x)
var(x) median(x)
quantile(x,p)
cor(x,y) t.test()
lm(y ~ x)
- 23. 部分函数统计检验
lm(y ~ f+x)
lm(y ~ x1+x2+x3)
binom.test
fisher.test
chisq.test
glm(y ~ x1+x2+x3, binomial)
...
- 24. (本页无文本内容)
- 25. (本页无文本内容)
- 26. 缺失数据
- 27. (本页无文本内容)
- 28. (本页无文本内容)
- 29. (本页无文本内容)
- 30. (本页无文本内容)
- 31. 三 对象和它的模式与属性
- 32. (本页无文本内容)
- 33. 对象的类型数值型 Numeric 如 100, 0, -4.335
字符型 Character 如 “China”
逻辑型 Logical 如TRUE, FALSE
因子型 Factor 表示不同类别
复数型 Complex 如:2 + 3i
- 34. 四种类型的向量字符型
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)
复数型 略
- 35. 对象的类型的判断对象类型判断
mode()
class()
is.numeric() #返回值为TRUE或FALSE
is.logical()
is.charactor()
is.data.frame()
- 36. 对象的类型的判断对象类型转换
as.numeric() #转换为数值型
as.logical()
as.charactor()
as.matrix()
as.dataframe()
- 37. 为对象起名 R是区分大小写的,A与a是不同的。
对象名不能用数字开头,但是数字可以放在中间或结尾。推荐用”.”作为间隔,例如 anova.result1。
举例:一个向量a,包含了四个元素,
a<-c(10,15,21,18)该向量为数值型,长度为4。
保留名称(命名对象时不要与保留名称冲突):
NA, NaN, pi, LETTERS, letters, month.abb, month.name
- 38. 对象的类别向量(vector) 一系列元素的组合。
因子(factor) 因子是一个分类变量,如“a”,”a”,”a”,”a”,”b”,”b”,”b”,”c”,”c”
数组(array) 数组是k维的数据表。
矩阵(matrix) 矩阵是数组的一个特例,维数k = 2。
数据框(dataframe) 是由一个或几个向量和(或)因子构成,它们必须是等长的,但可以是不同的数据类型。
列表(list) 列表可以包含任何类型的对象。
- 39. (本页无文本内容)
- 40. (本页无文本内容)
- 41. 四 因 子
- 42. > sex=c("M","F","M","M","F")
> sexf=factor(sex);sexf
[1] M F M M F
Levels: F M
- 43. (本页无文本内容)
- 44. (本页无文本内容)
- 45. 五 多维数组和矩阵
- 46. 多维数组和矩阵dim()和matrix()
x <- 1:12
dim(x) <- c(3,4)
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
matrix.x <- matrix(1:12,nrow=3,byrow=T)
为行或列添加名称:
row.names()
col.names()
- 47. 数组下标
- 48. 数组的运算
+, -, *, /, ^
运算后给出数值结果
- 49. 数组的运算
- 50. 矩阵的运算
- 51. 矩阵的运算
- 52. (本页无文本内容)
- 53. 六 列表与数据框
- 54. 列表与数据框物种数科数属数海拔坡度类型样方140152260025山顶样方251122635030山坡样方346112039045山坡样方438122426020低地样方549102522033低地行名Row names
字符串列名 Column names每列可看做带名称的向量表1 数据表、数据框与向量字符串、因素每行作为一个观测
- 55. 列表的创建列表可以是不同类型甚至不同长度的向量(数值型,逻辑型,字符型等等)、数据框甚至是列表的组合。
list()
例如
list(character,numeric,logical,matrix)
- 56. 数据框的创建data.frame() #生成数据框
d <- data.frame(character,numeric,logical)
cbind() # 按列组合成数据框
c.data<-cbind(character,numeric,logical)
rbind() # 按行组合成数据框
- 57. 列表的创建> list(1,matrix(2:9,nrow=2),"估计","FALSE")->x;x
[[1]]
[1] 1
[[2]]
[,1] [,2] [,3] [,4]
[1,] 2 4 6 8
[2,] 3 5 7 9
[[3]]
[1] "估计"
[[4]]
[1] "FALSE"
- 58. 列表的创建> data.frame(x)
X1 X1.1 X2 X3 X4 X.估计. X.FALSE.
1 1 2 4 6 8 估计 FALSE
2 1 3 5 7 9 估计 FALSE> m<-cbind(1, 1:3);m
[,1] [,2]
[1,] 1 1
[2,] 1 2
[3,] 1 3
- 59. 引用数据框中的元素d <- data.frame(a1, a2)
$ 引用
d$a1
[,] 方括号引用
d[,1]; d[5,]a1 <- c(5260, 5470, 5640, 6180, 6390)
a2 <- c(3910, 4220, 3885, 5160, 5645)
- 60. 外部数据读取 最为常用的数据读取方式是用read.table() 函数或read.csv()函数读取外部txt或csv格式的文件。
txt文件,制表符间隔
csv文件,逗号间隔
一些R程序包(如foreign)也提供了直接读取Excel, SAS, dbf, Matlab, spss, systat, Minitab文件的函数。
- 61. read.table()的使用例:test.data<-read.table("D:/R/test2.txt",header=T)
header=T表示将数据的第一行作为标题。
read.table(file=file.choose(),header=T) 可以弹出对话框,选择文件。
- 62. 实例:从数据输入到t检验编号123456身高 m1.751.801.651.901.741.91体重kg607257909572表2 六名患者的身高和体重现有6名患者的身高和体重,检验体重除以身高的平方是否等于22.5。
- 63. 第一种方式:从控制台输入数据数据量较少时可以从控制台直接输入:
height<-c(1.75, 1.80, 1.65, 1.90, 1.74, 1.91)
weight<-c(60, 72, 57, 90, 95, 72)
sq.height<-height^2
ratio<-weight/sq.height
t.test(ratio, mu=22.5)
- 64. 第二种方式 从外部读取数据数据量较大时用read.table函数从外部txt文件读取
第1步 将Excel中的数据另存为.txt格式(制表符间隔)或.csv格式。
第2步 用read.table()或read.csv()函数将数据读入R工作空间,并赋值给一个对象。
- 65. 在Excel中将数据存为txt文件
- 66. 实例:t检验(续)一般从txt文档读取数据。每一行作为一个观测值。每一行的变量用制表符,空格或逗号间隔开。
read.table(”位置”, header=T)
read.csv(”位置”,header=T)
#从外部读取数据
data1<-read.table("d:/t.test.data.txt",header=T)
bmi<- data1$weight/data1$height^2
t.test(bmi, mu=22.5) #t检验
- 67. 七 编写函数
- 68. 编程基础 R可以灵活的编写程序,用户自己编写的程序可以直接调用。R语言编程时无需声明变量的类型,这与C,C++等语言不同。
基本格式
function.name<-function(x, y)
{
表达式
}
函数内部也可用#添加注释
- 69. 程序流程控制 ifif 表达式的写法
if(条件) 表达式
if(条件) 表达式1 else 表达式2
举例:
if(p<=0.05)
print(“p<=0.05!")
else
print(“p>0.05!")
- 70. 循环 for, whilefor(变量 in 向量) 表达式
for(i in 1:10) print(i)
while(条件) 表达式
i <- 1
while(i<10)
{
print(i)
i <- i + 1
}
- 71. 函数举例定义函数:
rcal<-function(x,y)
{
z <- x^2 + y^2;
result<-sqrt(z) ;
result;
}
调用函数:
rcal(3,4)
- 72. 八 R 绘图
- 73. R绘制的图形
- 74. R绘图功能 R具备卓越的绘图功能,通过参数设置对图形进行精确控制。绘制的图形能满足出版印刷的要求,可以输出JPEG、TIFF、EPS、emf、pdf、png等各种格式。
绘图是通过绘图函数结合相应的选项完成的。
绘图函数包括高水平绘图函数和低水平绘图函数。
- 75. 高水平绘图函数plot() 绘制散点图等多种图形
hist() 直方图
boxplot() 箱线图
stripchart() 点图
barplot() 条形图
dotplot() 点图
piechart() 饼图
interaction.plot()
matplot()
……
- 76. 散点图与箱线图举例
- 77. 低水平绘图函数lines() 添加线
curve() 添加曲线
abline() 添加给定斜率的线
points() 添加点
segments() 折线
arrows() 箭头
axis() 坐标轴
box() 外框
title() 标题
text() 文字
mtext() 图边文字
… …
- 78. 绘图参数参数用在函数内部,在没有设定值时使用默认值。
font= 字体
lty= 线类型
lwd= 线宽度
pch= 点的类型,
xlab= 横坐标
ylab= 纵坐标
xlim= 横坐标范围
ylim= 纵坐标范围
- 79. 举例:绘图生成0到2之间的50个随机数,分别命名为x,y
x <- runif(50,0,2)
y <- runif(50,0,2)
绘图:将主标题命名为“散点图”, 横轴命名为”横坐标”, 纵轴命名为“纵坐标”
plot(x, y, main=“散点图”, xlab=“横坐标”, ylab=“纵坐标")
text(0.6,0.6,"text at (0.6,0.6)")
abline(h=.6,v=.6)
- 80. 绘图举例
- 81. 例:分步绘图x <- runif(50,0,2);y <- runif(50,0,2)
plot(x, y, type="n", xlab="", ylab="", axes=F) #打开绘图窗口,不绘制任何对象
points(x,y) #添加坐标点
axis(1) #添加横轴
axis(at=seq(0.2,1.8,0.2), side=3) #添加纵轴
box() #补齐散点图的边框
title(main="Main title", sub="subtitle", xlab="x-label", ylab="y-label")
#添加标题、副标题、横轴说明、纵轴说明
- 82. 分步绘图ABCDEF
- 83. 一页多图> x <- runif(50,0,2);y<-runif(50,0,2);
z<-runif(50,0,2)
> par(mfrow=c(2,1))
> plot(x,y);plot(x,z)
- 84. 一页多图
- 85. 在原有图形上添加元素举例:
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") #添加曲线
- 86. 在原有直方图上添加曲线
- 87. 总 结R是开源的统计绘图软件,也是一种自解释的语言,有大量的程序包可以利用。
R中的向量、列表、数组、统计结果等都是对象,可以方便的生成所需对象,并进行筛选。
R脚本是输入的多个命令行。
R具有精确控制的绘图功能,生成的图可以另存为多种格式。
R编写函数无需声明变量的类型,能利用循环、条件语句,控制程序的流程。
- 88. R资源R主页: http://www.r-project.org
CRAN 北京镜像(数学所)
http://ftp.ctex.org/mirrors/CRAN/
群落生态学数据分析
http://ecology.msu.montana.edu/labdsv/R/labs/
Statistics with R
http://zoonek2.free.fr/UNIX/48_R/all.html
NCEAS提供的R资源
http://www.nceas.ucsb.edu/scicomp/RProgTutorialsLatest.html