2023年12月8日发(作者:)

第 1 章

R语言简介

R软件最初是由奥克兰(Auckland)大学的Robert Gentleman和Ross Ihaka及其他志愿者在1997年前后开发的一个统计分析系统.其前身是贝尔实验室所开发的S语言.R语言现在由R开发核心小组(R Development Core Team)维护,他们的开发维护完全出于自愿,将全球优秀的统计软件打包提供给大家共享.R软件免费下载网址:/或.

1.1 R语言的特点

自诞生至今不到20年的时间,R语言已经成为全球众多统计学者和统计工作者的首选统计分析软件.R语言最大的特点或优势在于:它是一款免费的统计计算软件,并有着强大的软件维护和扩展团队.R语言的主要特点还包括:

(1)不受操作系统的限制.R语言可以在Windows,UNIX,Macintosh操作系统上运行,这就意味着R语言几乎可以在任何一台计算机上运行.本书主要基于Windows 操作系统上R软件的使用进行介绍.

(2)R语言是一种解释性的编程语言.它同Matlab一样,不需要编译即可执行代码.

(3)拥有完善的帮助系统.R软件内嵌一个非常实用的帮助系统:包括随软件所附的pdf帮助文件(An Introduction to R)和Html帮助文件.另外,通过help命令可以随时了解R软件所提供的各类函数的使用方法.

(4)具有强大的绘图系统.R支持的主要图形系统有:基础图形(base)、网格图形(grid)、lattice图形和ggplot2.这些系统使得数据可视化更为便捷.此外,R软件生成的图形文件可以保存为各种形式的文件(jpg,png,bmp,ps,pdf,emf,xfig,pictex等),有利于进一步分析与使用.

(5)具有强大的统计分析功能.R语言的部分功能(大约25个程序包)嵌入在R语言底层,其他都能以Package形式下载,几乎涵盖了现有的全部统计分析方法.

1.2 R语言运行平台

R软件的运行平台为:RGui(graphic user’s interface).启动R软件,我们看到RGui,即图形用户界面的主窗口,见图1.1.

1 2

R语言与现代统计方法

图1.1 R软件的运行平台:RGui

R软件的运行平台RGui由三部分组成:主菜单、工具条、R Console(R语言运行窗口).

R Console:绝大部分工作都是通过在这里发布命令来完成的,包括数据集的建立、数据的读取、作图等,在这里也可以得到在线帮助.

1.2.1 工作目录

工作目录是R语言数据输入输出的默认位置,默认状态下是软件安装时的目录.R的很多操作,包括读写数据,打开、保存脚本文件,读取保存工作空间的镜像等都是在工作目录中进行的.为管理方便,在首次运行R软件前,可以建立一个自己的目录,启动R后将工作目录改变到自己的目录上.在Windows版本中,更改工作目录可以利用菜单方式,选择“文件”|“改变工作目录”选项,选择自己的目录即可,见图1.2.

另外,也可以利用getwd()命令获得当前工作目录,并直接利用setwd()命令改变当前工作目录.例如:

> getwd()

[1] "C:/Users/tongji/Documents"

> setwd("C:/Users")

> getwd()

[1] "C:/Users"

需要说明的是,在Windows操作系统中,以不同的方式打开R软件,如通过桌面快捷方式或双击文档中的.RData文件运行R软件,其工作目录可能会不同.因此,每次运行R软件时,需要注意工作目录问题.

第1章 R语言简介

3

图1.2 主窗口文件菜单

命令()或者dir()可以用来显示当前工作目录中的所有文件和文件夹.例如:

> ()

[1] "360js Files" "Adobe" "" "Downloads"

[5] "My eBooks" "My Music" "My Pictures" "My Videos"

[9] "save_" "SPSS_"

可以看到,在当前工作目录下,共有10个文件或文件夹.

1.2.2 工作空间

对于初学者而言,工作空间(workspace)可以理解为R当前的工作环境或工作场所,它存储着在运行R时所定义的变量、向量、矩阵等所有的对象与函数.很多时候我们希望在下次运行R时能够继续以前的工作,这时只需将工作空间保存到一个镜像中,下次运行R时载入工作空间镜像即可.

工作空间存放在当前工作目录下的一个后缀名为.RData的文件中,当启动R时,工作空间将自动创建.当直接单击运行窗口R Console中的“关闭”按钮或利用命令

>q()

退出R时,系统将提示我们是否需要保存工作空间.

如果我们想在不退出R时保存工作空间,可以选择“文档”|“保存工作空间”选项(见图1.2)或利用命令

>()

来保存.以后运行R时可以通过选择“文件”|“加载工作空间”选项(见图1.2)或命令

>load()

加载,进而可以继续前一次的工作.

4

R语言与现代统计方法

1.2.3 历史命令

在运行R时,我们往往在运行窗口R Console中交互式输入很多条命令.使用上行箭头或下行箭头可以查看已输入命令的历史记录,这样可以选择某条命令进行适当修改后再次运行,而不必烦琐地重复录入.

选择“文档”“保存历史”|选项可以将运行窗口中的所有记录保存到后缀名为.RHistory的文件中;选择“文档”|“加载历史”选项(见图1.2),可以载入历史命令.利用函数

>history()

也可以显示最近使用过的命令,默认值为最近的25条.也可以自由定制显示更多条,例如:

>history(50)

可以显示最近使用过的50条命令;利用命令

> savehistory("myhistory")

可以将命令保存在文件名为ry的文件中;命令

> loadhistory("myhistory")

将载入文件名为ry的命令历史.

1.2.4 帮助系统

学习并较好地掌握一门语言或软件,快捷方便的帮助系统是其关键.R软件提供了十分强大的帮助系统,见图1.3.

图1.3 R中的“帮助”菜单

(1)在R用户界面中,“帮助”菜单中的“R FAQ”选项(见图1.3)给出了关于R软 第1章 R语言简介

5

件中的一些常见问题,FAQ是Frequently Asked Questions的缩写,单击该选项,则以网页的形式给出R软件中一些常见的问题;选项“Windows下的R FAQ”也是以网页的形式给出Windows操作系统下R软件使用的一些常见问题.FAQ随着R软件版本的更新而更新.

(2)R软件中自带8本pdf格式的帮助手册,分别是An Introduction to R,R reference,R Data Import/Export,R Language,Definition,Writing R Extensions,R Internals,R Installation

and Administration和Sweave User.这些手册为R的学习与使用提供了极大的便利,初学者可以着重看第一本,即An Introduction to R.

(3)利用“帮助”菜单中的“Html 帮助”选项或者通过命令

>()

打开html帮助系统(见图1.4).在该帮助系统中可以很方便地找到所需要的文档.

图1.4 Html帮助系统

(4)可以通过函数help()得到相应函数的帮助,例如命令

>help(plot)

或者

>?plot

可以得到函数plot的说明.help()在默认状态下,只会在载入内存的程序包中搜索,即选 6

R语言与现代统计方法

项es默认值为FALSE.我们可以通过选项设置改变搜索范围,例如:

> help("bs",es=TRUE)

> help("bs",package="splines")

上述两条命令分别表示在所有程序包及只在“splines”包中搜索函数“bs”的说明文件,可以利用该方法学习程序包的使用方法和注意事项.

需要说明的是,如果我们对某个函数名不是特别熟悉,可以利用函数apropos()或()等进行查找,例如:

> apropos("fun")

该命令用于找出名字中含有指定字符串“fun”的函数,但只会在被载入内存中的程序包中搜索.而

> ("fun")

则列出了所有帮助页面中的含有字符串“fun”的函数.

利用函数demo()可以得到R软件提供的几个示例,例如:

> demo(package = "stats")

将给出程序包“stats”包含的程序的示例(见图1.5).命令

> demo(smooth)

给出函数smooth()的演示示例.

图1.5 程序包stats的演示示例

第1章 R语言简介

7

1.3 R程序包的安装使用

1.3.1 R软件的下载与安装

前面曾经提及过,R软件的安装程序包(base installation)可以从网站www.r-

/上免费下载.该网站列出了包括中国、美国、加拿大等全球主要国家的一些镜像点,我们可以选择最近的一个镜像点(需要说明的是,CRAN的官方服务器位于奥地利的维也纳经济学院,全球的R使用者都可以从官方服务器下载,但下载速度比较慢,因此尽量避免从官方服务器下载),例如打开网址/mirrors/CRAN/,选择Download R for Windows,在新打开的页面中(见图1.6),选择base选项即可下载.R软件核心小组每过一段时间就会推出更新版本,目前的版本是R 3.2.3.R软件的安装非常简单,双击下载的安装程序,然后按照系统提示完成相应操作即可.

图1.6 R软件下载页面

1.3.2 程序包的安装与加载

程序包(package)可以理解为由函数、数据、预编译代码构成的集合,而存储程序包的文档称为库(library).R软件自带了一些基本的程序包,如stats、datasets、graphics等程序包,这些程序包可以直接使用.除了基本的程序包外,CRAN还提供了大量的其他程 8

R语言与现代统计方法

序包供我们下载使用.截至2016年8月27日,CRAN上现有8960个程序包可供下载,当然你也可以建立自己的程序包.这些程序包下载安装以后,需要载入激活后才能使用.

在联网条件下,选择“程序包”|“安装程序包...”选项(见图1.7)或者利用函数es()可以完成程序包安装.这里同下载R安装程序类似,也需要选择最近的镜像点(如果你想下载速度快一些),在出现的程序包列表中选择需要的程序包即可进行下载安装.假若你已经知道自己需要安装的程序包的名字,例如,程序包bayesGARCH,也可以直接利用命令

> es("bayesGARCH")

完成程序包bayesGARCH的下载安装.

图1.7 R中的“程序包”菜单

程序包仅需安装一次即可一直使用.同R的版本经常更新一样,程序包也经常被其发布者更新,选择“程序包”|“更新程序包...”命令或利用函数es()可以完成程序包的更新.

除了R自带的程序包外,其他新安装的packages在每次使用前必须先载入.选择“程序包”|“加载程序包...”命令(见图1.7)或者利用函数library()可以完成程序包载入.例如,命令

> library(bayesGARCH).

即可完成程序包“bayesGARCH”的载入.

1.3.3 与程序包有关的一些函数

library():显示已经安装的程序包列表.

第1章 R语言简介

9

.libPaths():显示库所在的目录.

search():显示已经加载可以使用的程序包列表.

data():返回R的内置数据集.例如:

> data() #返回datasets程序包中的数据集

> data(package="bayesGARCH") #返回程序包中的数据集

1.4 初识R语言

R软件的默认命令提示符为“>”,表示正在等待输入命令.如果一个语句在一行中输不完,按回车键,系统会自动在续行中产生一个续行符“+”.在同一行中,输入多个命令语句时,需要用分号将其隔开.

例如:

> n<-1 #给变量n赋值为1

> n #显示变量n的内容,同print(n)

[1] 1

其中方括号[1]表示从变量n的第一个元素显示.

R软件中的函数总是带有圆括号,即使括号中没有内容,例如ls().如果直接输入函数名而不输入圆括号,R则会自动显示该函数的一些具体内容.

例如:

> ls() #列出当前工作空间中的对象(Object)

[1] "n"

> ls #显示函数ls()的内容

限于篇幅,这里函数ls()的内容没有给出.R软件中进行的所有操作都是针对存储活动内存(即当前工作空间)中的对象的.所有能够使用的R函数都被包含在一个库(Library)中,该库存放在R安装文件下的library目录下.

1.4.1 对象的命名

R中的对象是一个抽象的概念,可以理解成以不同形式存储的数据,如向量、矩阵、数据框等.R中对象的命名必须以一个字母开头,其余可以是数字、字母、点号“.”以及下划线.以点号开头的变量名比较特殊,应该尽量避免.在R语言中,字母大小写有区别,因此Height和height代表两个不同的对象.

在R语言中,有些变量名具有特定含义,例如F或FALSE、T或TRUE分别表示逻辑取值为“真”和“假”,若重新定义这些变量,容易引起歧义,命名过程中应尽量避免.

1.4.2 对象的赋值

一个对象可以直接由赋值来定义,也可以先定义对象,再进行赋值.可以用“=”或“<-”来赋值,也可以用命令assign()实现赋值,例如:

> m1<-10 #定义对象m1,并赋值为10

10

R语言与现代统计方法

> m1

[1] 10

> m2=20 #定义对象m2,并赋值为20

> m2

[1] 20

> assign("m3",100) #定义对象m3,并赋值为100

> m3

[1] 100

其中,“#”号及其后的内容为注释语句,不进行运算.在编写程序时,为增加程序的可读性,可添加必要的注释语句.例如:

> math<-c(90,85,68,88,92) #定义了一个对象,即包含5个元素的向量

> math

[1] 90 85 68 88 92

1.4.3 一个实例

下面通过一个R软件内置的数据集women来说明R软件是如何进行统计分析的.该数据集在datasets程序包中,该程序包随着R的启动而自动加载,因此不需要再次载入.

> women #显示数据集women中的全部观测值

height weight

1 58 115

2 59 117

3 60 120

4 61 123

5 62 126

6 63 129

7 64 132

8 65 135

9 66 139

10 67 142

11 68 146

12 69 150

13 70 154

14 71 159

15 72 164

该数据集共包含了15组数据,记录的是15名年龄在30岁到39岁的美国妇女的身高和体重.

> head(women)

height weight

1 58 115

2 59 117

3 60 120

4 61 123

5 62 126

6 63 129

即命令head(women)仅显示数据集women中的前6个观测值.类似地,tail(women)仅显示数据集women中的最后6个观测值.

> names(women) #显示数据集women中的变量名

第1章 R语言简介

11[1] "height" "weight"

> mean(women$height)

[1] 65

以上命令用于计算15名妇女的平均身高.其中,对象women$height表示women数据集中的height变量.也可以先将数据集women激活,使之成为当前的数据集,此时,women中的变量就可以直接被使用了.例如:

> attach(women) #激活women数据集,使之成为当前数据集

> mean(height)

[1] 65

> var(height) #计算身高的方差

[1] 20

> var(weight) #计算体重的方差

[1] 240.2095

> sd(weight) #计算体重的标准差

[1] 15.49869

> summary(weight)

Min. 1st Qu. Median Mean 3rd Qu. Max.

115.0 124.5 135.0 136.7 148.0 164.0

> plot(height,weight) #画出height和weight的散点图(见图1.8)

> detach(women) #从活动内存中清除数据集

图1.8 height和weight的散点图