-
R
语言初步
1
第一节
基本知识
一、界面介绍
R
语言是一种自由软件编程语言与操作环境,主要用于统计分析、绘图、数据挖掘。< /p>
R
语言最早由新西兰奥克兰大学的
Ross Ihaka
和
Robert Gentleman
开发,所以命名为
R
语言。
R
语言是免费下载的,
可以在网站
Htt p:/
中找到适合自己的镜像网站,
下载
R
语言安装包和其他文件。
R
的界面大致如下图所示, 包括菜单、快捷键、命令窗口和图形输出窗口。
R
主要 通过在命令窗口中输入命令来进行操作,菜单能够提供的功能很少,因此学习
R
< br>需要记住一些常用的命令,更多的命令则需要常备一份命令手册,以便查询。
R
的命令窗口中有一个红色的“
>
”符号,操作命令即写在这个符号的后面,完成一条
命令后,用回车
结束。
用
getwd()
可以知道 p>
R
的工作路径,也就是操作过程中的数据、文件等所存储的目录。
一般默认的目录为用户的
Document
目录。为了避免大量的文件混淆, 可以专门为
R
的操作
设定一个工作目录。
假定在
C
盘上建立一个名叫“
R
”的目录,用以下命令进行设定:
setwd(
,如图:
在这里注意一下,当引用一个路径时,
R p>
中需要用到双斜线来表示路径引用,如上文中
的
c:R
,这是
R
的一个特殊情况。
再比如以下操作:
1
参考薛毅,陈立萍(
201 4
)
:
R
语言实用教程,清华大学出版社
1
>x1<-c(10,12,14,16,18)
>y1<-c(2.5,2.6,3.1,4.6,3.8)
>plot(x1,y1)
注意几点:
(
1
)式子中的“
<-
”表示赋值,也就是把右边的数值赋予左边的变量名。
(
2
)
R
语言 中对于字母的大小写非常敏感,变量名可以用大写也可以用小写,但用大
写字母命名的变
量如果改用小写来调用,会无法识别。
(
3
< p>)如果觉得命令窗口上的内容太多,可以用Ctrl-L
来清屏幕。
(
4
)
如果要重新调用此前用过 的命令,
可以用上箭头回溯此前的命令,
也可以用
history ()
来查看历史记录。
(
5< /p>
)
命令窗口中的命令行如果太长需要分行,
回车后前面会出现一个红 色的
+
号,
可以
在这后面继续写命令。但
如果是在脚本程序中分行,则不需要写这个
+
号。
二、
R
的工作空间
启动
R
之后,
即开启了一个特定的工作空间。
在这个工作空间中创建的变量会保存下来,
在后续的操作中可以反复使用。
因此,
在使用
R
时,
需要知道自己在工作空间中 创建了哪些
变量,这些变量分别代表了哪些含义。
比如在上一小节的例子中,我们建立了两个向量
x1
和
y1< /p>
,那么这两个向量会一直存在
于工作空间中。在命令行中直接输入向量名,
可以显示出其内容。
> x1
[1] 10
12 14 16 18
如果想知道工作空间中有哪些变量存在,可以用
ls()
函数。如下图
2
这里显示出这么多变量的原因是此前做过一个演示操作,遗留下许多过 程变量。如果想知道某个变
量的内容,可以直接输入这个变量的名称,再回车。
2
2
用
rm(x1)< /p>
可以删除变量
x1
。用下列命令可以删除所有的变量:
>
rm(list=ls(all=TRUE))
3
退出
R
使用
q()
命令,这时系统会 询问是否保存工作空间,可以在对话框中选择“是”
或者“否”
。也可以 在
q()
命令中进行设定,如:
>q(
save=
如果保存了工作空间,
则在指定的工作目录下会出现一个工作 空间文件。
下一次启动
R
的时候,
可以直 接双击这个工作空间文件,
这样在启动
R
的同时,
也会载入相应的工作空间,
继续此前的工作。
用
load(
也可以实现同样的功能。
三、加载程序包
R
软件安装后 ,仅包括了基本程序包,能够实现一些常规的统计分析。如果要做一些特
殊的分析,则需
要加载新的程序包。
比如说,线性判别分析需要用到的
lda()
函数来自于程序包
MASS
,用下列方式加载:
>library(
有些程序包来自于其他的软件库
,需要选择软件库,然后再选择“安装程序包”
,这个
可以通过界面上的
“程序包”菜单里的选项来完成。在此前,需要先设定
CRAN
镜像,可以
在连网的前提下选择一个中国的镜像站点。
在联网的
条件下,通过
help(
命令可以帮助信息,如果不清楚某个命令的参数该
如何设定等等,可以边看帮助文件边操作。
第二节
数据管理
一、变量
1.
变量类型
R
中的变量包括:
数值型(<
/p>
numeric
)
,其中又包括整型、单精度型、双精度型三类;< /p>
逻辑型(
logical
)
,取值只能是
TRUE
或者
FLASE
,也可以 简写为
T
或者
F
;
字符型(
character
)
,是夹在单引号或者双 引号中间的字符串;
复数型(
complex
)
,用
a+bi
的形式来显示;
> sqrt(-1+0i)
[1] 0+1i
原始型(
raw
)
,是指用二进制方式保存的数据。
2.
变量形式
(
1
)单一变量
:就是存在单一值的变量。
3
请自己分析一下这条命令的结构,借以了解
R
语言的特色
3
(
2
)向量
:由若干个相同类型的元素构成的序列,是
R
中最常用的 对象,可以用来反
映数据分析中的一个变量。
>x1<-c(10,12,14,16,18)
在上例中,
生成了一个名叫
x1
的向量,包括
5
个元素。 p>
c()
称为连接函数,用于把各个
分量合并成一个向量。
p>
看看下面的操作
(
3
)矩阵
用
matrix()
函数可以生成一个指定维度的矩阵,如下例所示:
> mdata<-matrix(c(1,2,3,11,12,13),
+ nrow=2,ncol=3,byrow=TRUE,
+ dimnames=list(c(
> mdata
var1 var2 var3
a1
1
2
3
a2
11
12
13
其他矩阵函数:
dim()
:和于设置或取对象(包括矩阵、数组等)的维数
nrow()
:矩阵的行数;
ncol()
:矩阵的列数;
rbind()
:矩阵按行合并;
cbind()
:矩阵按列合并;
矩阵元素的引用,用
A[1,2]
这样的格式。
(
4
)数组
向
量是一维数组,矩阵是二维数组,数组则是更多维的情况。数组的语法是:
array(data=NA, dim=length(data),
dimnames=NULL)
(
5
)因子、列表、对象
因子是用于数据分组的标签,
类似于向量的形式,
与向量同时使用时可以对向量 中的元
素进行分组。
列表与向量类似,
区别在于列表中的元素不需要是同一种类型的数据,
也可以认为是一
个多维数组中的一条记录。
对象可以指代
R
中的一切客体,
包括数据,
也包括结束。
例如,
做回归分析后的结果可
以输出到一个变量,
这个变量就成为一个对 象,
其中包括了分析后得到的所有文字结果和数
据结果。
(
6
)数据框
4
相当于一个数据库,包括了需要处理的数据。
> df<-(Name=c(
张三
李四
王五
赵六
陆仁贾< /p>
Sex=c(
Age=c(13,13,12,13,12),
Height=c(56.5,65.3,57.3,62.5,59.0),
Weight=c(84.0,98.0,83.0,84.0,99.5) )
> df
3.
产生特定形式的向量
(
1
)等差数列
> (x1<-1:10)
[1]
1
2
3
4
5
6
7
8
9 10
上述命令中的括号表示在生成向量之后即将其显示出来。
注意:
“:
”的计算优先级高于四则运算。
(
2
)等间隔函数
函数语法:
seq(from=1,
to=1, by=x, =NULL, =NULL)
4
<
/p>
其中,
by
、
、
< p>三个参数只能输入一个。
by
表示 数据间的间隔;
表示在间隔中生成的数据的个数;
后面必
须带一个向量,表示将这个向量按照间隔所设定的区间进行等比例缩放。
试试以下的命令
>seq(0,5,=20)
>seq(1,10,by=2)
>seq(10)
>seq(1,5,=rnorm(20))
(
3
)重复函数
rep()
试试下面的命令(分别反映
rep ()
中可选择的各种参数)
>rep(1:4,times=2)
>rep(1:4,=15)
>rep(1:4,each=3)
后面还有很多语法命令,其中使用
A=B
这种形式的,表示
B
是默认值。例如配合中
from=1
,表示在
不设定的情况下,
from
的默认值为
1
。
5
4
>rep(1:4,c(1,4,2,4))
(
4
)产生默认的向量
vector(mode=
其中,
mode
可以 选择各种变量类型,默认为逻辑型;
length
为生成的向量长度。
< p>
>vector(mode=
二、函数
1.
数学函数
abs(x)
,
sqrt(x)
,
exp(x)
,
log(x)
,
log10(x)
,
< p>log(x,n),
sin(x)
,
fact orial(x)
,
choose(n,k)
,
g amma(x)
,
floor(x)
,
c eiling(x)
,
trunc(x)
2.
字符串函数
nchar()
,
substr()
,
paste()
,
st rsplit()
,
noquote()
3.
向量函数
min()
,
max()
,
()
,
()
,
range()
,
sum()
,
prod ()
,
length()
,
median() p>
,
mean()
,
var()
,
sd()
,
sort()
,
or der()
,
()
三、读写数据
1.
读入表格形式的纯文本文件
()
可以带上各种参数,
包括数据的表头等等 ,
在没有设定表头的情况下,
默认的变量名为
V1
、
V2
等形式。
读入的数据框
架可以用
edit()
函数来进行编辑,
也可以直接用
< p>edit()函数来生成一个数据
框架。
2.
读入数据流文件
例如
的形式为:
172
75
169
54
169
64
171
65
166
47
……
>scan(
3.
读取其他格式数据
需要安装
forei gn
程序包,则可使用
()
,
()
,
read.S()
,
()
,分别
对应
SPSS
,
SATA
,
S-plus
,
Stata
等格式的文件。
4.
读取
EXCEL
数据
(
1
)将数据转化为“文本文件(制表符分隔)
”
, 用
()
(
2
)转换为
C SV
文件,用
()
(
3
)直接读取,需要安装
RODBC
程序包,然后用
odbcCon nectExcel()
函数完成连接,
再用
sqlTa ble()
建立起查询关系。
5.
数据集的读取
数据集是
R
软件包中可利用的数据集。用
data()
可以列出
Base< /p>
程序包中的可用数据集,
如果要加载,只需要在括号中加入数据集的名称,
如
data(infert)
,可载入对应的数据集。
如果要加载其他软件包中的数据集,可以用
>data(package=
6
6.
写数据文件
(
1
)写为数据流文件
write(x, file=
ncolumns
表示每行写几列,字符型变量默认为
1
列,数值型默认为
5 p>
列。
(
2
)写为表格文件
()
()
第三节
常规统计分析
一、统计分布
1.
与分布相关的函数
(
1
)正态分布
dnorm(x,mean=0,sd=1,log=FALSE)
:概率密度函数;
pnorm(q,mean=0,sd=1,=TRUE,log.p=FAL
SE)
:分布函数;
qnorm(p,mean=0,
sd=1,=TRUE,log.p=FALSE)
:分位函数;
上述函数可以用于进行正态分布的各种计算。
(
2
)均匀分布:
dunif()
,
punif()
,
qunif()
(
3
)指数分布:
dexp()
(
4
)二项分布:
dbinom() < /p>
(
5
)
Poisson
分布 :
dpois()
(
6
)卡方分布:
dchisq() < /p>
(
7
)
t
分布:
< p>dt()
(
8
)
F
分布:
df()
2.
随机数的生成
要生成服从各种分布的随机数,可以在上述分布名称的前面加上
r
。
例如,要生成服从正态分布的随机数,可以这样做:
x<-rnorm(100,0,1)
如果要生成均匀分布的随机数,用下列命令
runif(n, min=0, max=1)
3.
随机抽样
sample(x,size,
replace=TRUE, prob=NULL)
从
x
< p>中抽出一个容量为size
的样本。
二、假设检验
1.
t
检验
(x,y=NULL,
alternative=c(
mu=0, paired=FALSE,
=FALSE, =0.95, ...)
例如:
7