r语言 rownames里rownames=F, sep="\t"是什么意思

R语言数据储存与读取 - CSDN博客
R语言数据储存与读取
write.table(c, file =&&C:/Users/Oliver/Desktop/foo.txt&, row.names = F,col.names=F, quote = F)
1 首先用getwd()&获得当前目录,用setwd(&C:/data&)设定当前目录
2&数据保存
创建数据框d
&d&&-&data.frame(obs&= c(1, 2, 3), treat = c(&A&,&&B&,&&A&), weight = c(2.3, NA, 9))
2.1 保存为简单文本
&write.table(d, file =&&c:/data/foo.txt&, row.names = F, quote = F)&#&空格分隔
&write.table(d, file =&&c:/data/foo.txt&, row.names = F, quote = F, sep=&\t&)&&# tab 分隔的文件
2.2&保存为逗号分割文本
&write.csv(d, file =&&c:/data/foo.csv&, row.names = F, quote = F)
2.3 保存为R格式文件
&save(d, file =&&c:/data/foo.Rdata&)
2.4&保存工作空间镜像
&save.image(&)&= save(list =ls(all=TRUE), file=&.RData&)
3&数据读取
读取函数主要有:read.table(&),&scan(&)&,read.fwf(&),readLines().
3.1&用 read.table(&)&读&&c:\data”&下houses.dat
&setwd(&C:/data&); HousePrice &- read.table(file=&houses.dat&)
如果明确数据第一行做表头,则使用header选项
&HousePrice &- read.table(&houses.dat&, header=TRUE)
read.table(&)&变形有: read.csv(&),read.csv2(&), read.delim(&), read.delim2(&).前两读取逗号分割数据,后两个读取其他分割符数据。
3.2 &用scan(&)&比read.table(&)&更灵活。
但要指定&变量类型:如:C:\data\data.dat:
&mydata &- scan(&data.dat&, what = list(&&, 0, 0))
&mydata &- scan(&data.dat&, what = list(Sex=&&, Weight=0, Height=0))
3.3 用read.fwf(&)读取文件中一些固定宽度数据
如:C:\data\data.txt:
&mydata&&- read.fwf(&data.txt&, widths=c(1, 4, 3), col.names=c(&X&,&Y&,&Z&))
4&excel格式数据读取
4.1&利用剪切板
选择excel数据,再用(CTRL+C)复制。在R中键入命令:
&mydata&&- read.delim(&clipboard&)
4.2 使用程序包 RODBC.
如: c:\data\body.xls
Sex Weight Height
& library(RODBC)
& z &- odbcConnectExcel(&c:/data/body.xls&)
& foo &- sqlFetch(z,&&Sheet1&)
& close(z)
1 writeLines 会在最后一行/或者每行末尾加一个换行符
# fileConn&-file(output_fasta)
# writeLines(mystr, fileConn)
# close(fileConn)
2 另外一个写文件的方法是sink,不会在行末加换行符
sink(output_fasta)
cat(mystr)
write is a wrapper for&, which gives further details on the format used.
&for writing any&R&objects,&&for
data frames, and&&for reading data.
本文已收录于以下专栏:
相关文章推荐
1 首先用getwd() 获得当前目录,用setwd(&C:/data&)设定当前目录
2 数据保存
创建数据框d
&d data.frame(obs = c(1, 2, ...
首先准备测试数据*(mtcars)分别为CSV.
TXTread.table 默认形式读取CSV(×)与TXT(效果理想)
①& test&-read.table(&C:/Users/ad...
R语言中data.table包用于处理大数据集(GB级或TB级),但其无法逃掉内存不足的限制,对于电脑内存只有4G或8G的我们来说会把内存撑爆,不知道你有没有这个体验,真是令人头痛,据说ff包的rea...
列表是一种特别的对象集合,它的元素也由序号(下标)区分,但是各元素的类型可 以是任意对象,不同元素不必是同一类型。元素本身允许是其它复杂数据类型,比如,列表 的一个元素也允许是列表。例如:
7.1 函数read.table()
该函数可以直接将文件中完整的数据帧读入。此时文件要符合特定的格式:
1 第一行应当提供数据帧中每个变量的名称;
2 每一行(除变量名称行)应包含一个行标号和...
首先准备测试数据*(mtcars)
分别为CSV.    TXT
read.table 默认形式读取CSV(×)与TXT(效果理想)
& test&-read.table(&C:/Users/...
宝宝已惊呆,说不出话来,该选哪种方法读取Excel表格里的数据,我相信大众的眼睛是雪亮的:
1.实验规模16.3989万行,22列
实验电脑配置环境,说好了不能瞧不起博主啊哈& nrow(read...
【R语言】[学习笔记]一、 数据的读取与保存
1.读取文本文件
(1) getwd()
返回当前工作目录;
更改工作目录
R语言不是中国人开发的,自然对中文的处理上没有特别考虑,但是我们依然可以处理。
一个例子,R语言读取excel表的中文数据,关于excel表的读取请看博客R语言包gdata读取excel文件。setw...
R语言读取数据的几种方法,用read.table(),read.xlsx()读取Excel,csv数据
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)R语言与统计分析 - CSDN博客
R语言与统计分析
R语言与统计分析
汤银才 主编
高等教育出版社
二○○八年五月
本书以数据的常用统计分析方法为基础,在简明扼要地阐述统计学基本概
念、基本思想与基本方法的基础上,讲述与之相对应的R函数的实现,并通过
具体的例子说明统计问题求解的过程.
本书注重思想性、实用性和可操作性. 在内容的安排上不仅包含了基础统
计分析中的探索性数据分析、参数的估计与假设检验,还包括的非参数统计分
析的常用方法、多元统计分析方法及贝叶斯统计分析方法. 每一部分都通过具
体例子重点讲述解决问题的思想、方法和在R中的实现过程. 通过本书读者不
仅可以快速学会R的基本原理与核心内容,而且根据提供的例子与相应的R程
序学会解决问题的统计计算方法与基本的编程技术,为解决更为复杂的统计问
题奠定扎实的基础.
本书可作为各专业本科生、研究生数理统计或应用统计课程的基础教材
或实验教材,也可作为从事数据统计分析研究人员、工程技术人员的工具书或
 I 
统计学的任务是研究有关收集、整理、分析数据,从而对所考察的问题作
出一定的结论的方法与理论. 作为一门科学,统计学有其坚实的理论基础,研
究统计学方法的理论基础问题的那一部分,构成了所谓数理统计学的内容。其
次,统计学就其本质来讲,是一门实用性很强的科学,它在人类活动的各个领
域有着广泛的应用。因此数理统计的理论与方法应该与实际相结合,解决社
会、经济、工农业生产、生物制药、航空航天、质量管理、环境资源等领域中的
各种问题。最后,统计学又是一门技术性很强的科学,由于所研究问题越来越
复杂、变量之间关联性越越强、数据的规模越来越大,使得原有的计算方法无
法实现. 现在,随着计算机的不断发展与普及,特别是近20年来统计计算的突
破性进展及统计软件的不断完善和成熟,使得解决这些问题不仅成为可能,而
且越来越容易、快速.
目前许多大学几乎所有的理工科,甚至文科的许多专业都开设了《数理
统计》或《应用统计》之类的课程,有的还编写了相应的教材,这是令人可
喜的. 这些课程与教材的共同特点是以较大的篇幅介绍数理统计的理论、方
法与实际背景,并配有一定数量的例子和习题. 部分学校还为有统计专业和
应用数学专业的学生开设SAS或Matlab统计软件,为经济统计专业的学生开
设SPSS或EViews统计软件, 但这还远远不够.
作者长期从事概率论与数理统计、统计计算及统计软件的教学工作,我
们发现目前的统计教学普遍存在的问题有:一、关于教学内容:在有限的课
时下,对于非统计专业的学生采用统计专业学生的教学方式,过多强调理论
的重要性,从而忽视了统计思想和数据处理能力的培养;有的因为仅用一学
期(54课时或更少)讲授概率论与数理统计,面面俱到的概率论教学使学生无法
学到诸如回归分析与方差分析的重要内容. 二、关于软件教学:由于没有软件
支持,使用传统的教学方法和教材,无论是老师讲解例题,还是学生完成习题
都要花费大量的时间进行手工计算,且错误率高. 使用软件可使数据分析更具
 II  第零章 内容介绍
直观性、灵活性和可重复性,可起到举一反三的作用,提高学生的学习兴趣和
动手(操作或编程)能力. 三、关于统计教学与软件教学是否分开: 统计教学与
软件教学分开教学会产生一定的重复性,从而浪费有限教学课时,降低学习的
效率. 分开的教学会使大部分非统计专业的学生不能得到统计软件操作和数
据分析能力的培养. 有了统计软件, 可大大增加教学的信息量、节省时间用于
培养学生统计软件的上机操作能力;有了统计软件,使得大规模或海量数据
分析和精确计算成为可能,也使教材中的许多附表(如常用分布的分位数表)失
去其必要性. 四、关于R软件: 本书之所以采用R软件, 主要原因是其强大的数
据的图形展示和统计分析功能、免费使用和更新及大量可随时加载的有针对
性的软件包. 而SAS、Matlab、SPSS、EViews却都是收费软件,与R功能几乎相
同的S-PLUS也是收费的. R高效的代码、简洁的输出和强大的帮助系统使统
计软件辅助的统计教学成为可能. 基于R开发的菜单式驱动的图形界面工具R
Commander和PMG(见附录B)使得基础统计分析像SPSS一样容易实现.
本书介绍了R的基本功能、常用的数据处理与分析方法及它们在R中的实
现. 全书共分十一章及三个附录: 第一章, R 介绍. 介绍了R软件的功能与安
装. 第二章, R的基本原理与核心. 简明扼要地介绍了R软件的使用方法, 主
要侧重于不同类型的数据的操作与函数的使用. 第三章, 概率与分布. 介绍了
常用的离散与连续型分布及R中有关的四类函数: 分布函数、概率函数、分位
数函数和随机数生存函数. 第四章, 探索性数据分析. 介绍了单组和多组数据
中特征量的提取方法及数据的图形展示方法. 第五章, 参数估计. 主要介绍了
单总体与两总体正态及二项分布参数的点估计与区间估计. 第六章, 参数的假
设检验. 主要介绍了单总体与两总体正态及二项分布参数的假设检验. 第七
章, 非参数的假设检验. 主要介绍了常用的几个非参数检验方法. 第八章, 方
差分析. 主要介绍了多组数据比较的单因子与双因子方差分析及协方差分析
方法. 第九章, 回归分析与相关分析. 介绍了随机变量之间关系的度量与回归
分析及诊断方法. 第十章, 多元统计分析介绍. 介绍了多元分析中常用的主
成分分析、因子分析、判别分析、聚类分析、典型相关分析及对应分析方法.
第十一章, 贝叶斯统计分析. 介绍了贝叶斯分析中单参数与多参数模型、分
层模型及回归模型的分析方法. 最后是附录, 附录B介绍了基于R开发的基础
统计分析的菜单式工具R Commander和PMG, 附录C介绍了R的3个编程环境: R
WinEdt、Tinn-R及SciViews-R. 全书在所有程序都在R的2.6.0版本上调试通
过, 原则上在其它版本上也可以运行.
本书的特点是: 注重统计思想、实用性和可操作性. 我们在内容的设计上
尽可能简化统计理论与方法的推导过程,对于主要的统计知识都通过一个具体
例子展开、讲清要解决问题的思想、方法和具体的实现过程. 所有方法的实现
都有相应的R函数的调用格式,而例子讲解的R程序都全部嵌入在正文中,便
于读者举一反三,解答习题或进行其它类似的数据分析.
本书可作为各专业本科生、研究生数理统计或应用统计课程的基础教材
或实验教材,也可作为从事数据统计分析研究人员、工程技术人员的工具书或
参考读物. 本书整个教材的教学安排可考虑以1:3的比例安排上机时间. 具体教
学内容可根据需要进行取舍,具体可参考下表的安排课时:
教学内容 选取章节 课时安排
R语言入门 第一章, 第二章, 附录B 12
探索性数据分析 第三章, 第四章 12
数据统计分析 第五章, 第六章, 第八章, 第九章 24
选讲内容 第十章 8
第十一章 8
本书编写过程中,参考了大量的资料文献. 得到了华东师范大学金融与统
计学院全体老师, 特别是终生教授茆诗松老师的支持. 我的学生巍晓玲参与了
本书第四和第五章初稿的编写工作,徐安察参与了本书第六和第七章初稿的编
写工作,于巧丽参与了本书第八和第九章初稿的编写工作,岳昳婕参与了本书
第十一章初稿的编写工作, 上海师范大学的朱杰老师参与了本书第十章的编写
工作和全书的校对工作. 在全书的编写过程中,得到了高等教育出版社领导和
研究生教育与学术著作分社王丽萍女士的关心和帮助, 在此一并提示感谢.
由于编者水平有限,书中一定存在不足甚至错误之处,欢迎读者不吝指正.
2008 年 5 月
 IV  目录
内容介绍 II
第一章 R介绍 1
§1.1 S语言与R .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
§1.2 R的特点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
§1.3 R的资源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
§1.4 R的安装与运行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4.1 R软件的安装、启动与关闭 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4.2 R程序包的安装与使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
第一章习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
第二章 R的基本原理与核心 8
§2.1 R的基本原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
§2.2 R的在线帮助 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
§2.3 一个简短的R会话 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
§2.4 R的数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.1 R的对象与属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.2 浏览对象的信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
目录  V 
2.4.3 向量的建立 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.4.4 数组与矩阵的建立. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.4.5 数据框(data frame)的建立 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.4.6 列表(list)的建立 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.4.7 时间序列(ts)的建立 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
§2.5 数据的存储与读取 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.5.1 数据的存储 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.5.2 数据的读取 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
§2.6 R 的图形功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.6.1 绘图函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.6.2 低级绘图命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.6.3 绘图参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2.6.4 一个实例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
§2.7 R 编程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
2.7.1 循环和向量化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2.7.2 用R写程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.7.3 编写你自己的函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2.7.4 养成良好的编程习惯 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
第二章习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
第三章 概率与分布 81
§3.1 随机抽样 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
§3.2 排列组合与概率的计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
§3.3 概率分布 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.3.1 离散分布的分布律. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.3.2 连续分布的密度函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
 VI  目录
§3.4 R中内嵌的分布 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
§3.5 应用: 中心极限定理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.5.1 中心极限定理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.5.2 渐近正态性的图形检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.5.3 举例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
第三章习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
第四章 探索性数据分析 101
§4.1 常用分布的概率函数图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
§4.2 直方图与密度函数的估计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
4.2.1 直方图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
4.2.2 核密度估计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
§4.3 单组数据的描述性统计分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
4.3.1 单组数据的图形描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
4.3.2 单组数据的描述性统计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
§4.4 多组数据的描述性统计分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
4.4.1 两组数据的图形概括 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
4.4.2 多组数据的图形描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
4.4.3 多组数据的描述性统计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
4.4.4 分组数据的图形概括 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
§4.5 分类数据的描述性统计分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
4.5.1 列联表的制作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
4.5.2 列联表的图形描述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
第四章习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
第五章 参数估计 150
§5.1 矩法估计和极大似然估计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
目录  VII 
5.1.1 矩法估计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
5.1.2 极大似然估计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
§5.2 单正态总体参数的区间估计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5.2.1 均值u的区间估计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5.2.2 方差σ2的区间估计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
§5.3 两正态总体参数的区间估计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
5.3.1 均值差u1  u2的置信区间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
5.3.2 两方差比σ21{σ22的置信区间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
§5.4 单总体比率p的区间估计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
§5.5 两总体比率差p1  p2的区间估计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
§5.6 样本容量的确定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
5.6.1 估计正态总体均值时样本容量的确定 . . . . . . . . . . . . . . . . . . . . . . . . 173
5.6.2 估计比例p时样本容量的确定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
第四章习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
第六章 参数的假设检验 179
§6.1 假设检验与检验的p值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
6.1.1 假设检验的概念与步骤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
6.1.2 检验的p值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
§6.2 单正态总体参数的检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
6.2.1 均值u的假设检验. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
6.2.2 方差σ2的检验: χ2检验. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
§6.3 两正态总体参数的检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
6.3.1 均值的比较: t检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
6.3.2 方差的比较: F检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
§6.4 成对数据的t检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
 VIII  目录
§6.5 单样本比率的检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
6.5.1 比率p的精确检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
6.5.2 比率p的近似检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
§6.6 两样本比率的检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
第六章习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
第七章 非参数的假设检验 200
§7.1 单总体位置参数的检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
7.1.1 中位数的符号检验. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
7.1.2 Wilcoxon符号秩检验. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
§7.2 分布的一致性检验:χ2检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
§7.3 两总体的比较与检验. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
7.3.1 χ2独立性检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
7.3.2 Fisher精确检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
7.3.3 Wilcoxon秩和检验法和Mann-Whitney U检验 . . . . . . . . . . . . . 213
7.3.4 Mood检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
§7.4 多总体的比较与检验. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
7.4.1 位置参数的Kruskal-Wallis秩和检验 . . . . . . . . . . . . . . . . . . . . . . . 218
7.4.2 尺度参数的Ansari-Bradley检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
7.4.3 尺度参数的Fligner-Killeen检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
第七章习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
第八章 方差分析 226
§8.1 单因子方差分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
8.1.1 数学模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
8.1.2 均值的多重比较 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
8.1.3 同时置信区间: Tukey法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
目录  IX 
8.1.4 方差齐性检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
§8.2 双因子方差分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
8.2.1 无交互作用的方差分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
8.2.2 有交互作用的方差分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
§8.3 协方差分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
第八章习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
第九章 回归分析与相关分析 260
§9.1 相关性及其度量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
9.1.1 相关性概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
9.1.2 相关分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
§9.2 一元线性回归分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
9.2.1 数学模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
9.2.2 估计与检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
9.2.3 预测与控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
9.2.4 计算例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
§9.3 多元线性回归分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
9.3.1 数学模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
9.3.2 估计与检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
9.3.3 预测与控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
9.3.4 计算例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
§9.4 回归诊断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
9.4.1 残差分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
9.4.2 影响分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
9.4.3 共线性诊断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
§9.5 Logistic回归 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
 X  目录
第九章习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
第十章 多元统计分析介绍 315
§10.1 主成分分析与因子分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
10.1.1 主成分的简要定义与计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
10.1.2 主成分R通用程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
10.1.3 因子分析的简要定义与计算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
10.1.4 因子分析R通用程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
§10.2 判别分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
10.2.1 距离判别 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
10.2.2 Fisher判别法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
10.2.3 R通用程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
§10.3 聚类分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
10.3.1 基本思想 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
10.3.2 R通用程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
§10.4 典型相关分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
10.4.1 基本思想 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
10.4.2 R通用程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
§10.5 对应分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
10.5.1 基本思想 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
10.5.2 R通用程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
第十章习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
第十一章 贝叶斯统计分析 364
§11.1 贝叶斯统计分析与经典统计分析的比较 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
11.1.1 经典统计分析中存在的问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
11.1.2 对贝叶斯统计分析的质疑及褒奖 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
目录  XI 
§11.2 贝叶斯统计分析与先验分布的选取 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
11.2.1 贝叶斯公式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
11.2.2 先验分布的选取 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
11.2.3 贝叶斯分析体现了科学探索过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
§11.3 单参数贝叶斯统计分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
11.3.1 两项分布下的贝叶斯推断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
11.3.2 正态分布下的贝叶斯统计推断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
§11.4 多参数贝叶斯统计分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
11.4.1 方法概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
11.4.2 正态分布参数中的贝叶斯分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
11.4.3 随机模拟方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
11.4.4 一个实例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
§11.5 分层贝叶斯统计分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
11.5.1 分层模型的建立及其贝叶斯推断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
11.5.2 N-N模型与应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
§11.6 贝叶斯线性回归分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
11.6.1 模型的表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
11.6.2 后验分布 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
11.6.3 回归拟合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
11.6.4 后验预测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
第十一章习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
附录 A 秩与结的介绍 418
附录 B R的图形界面 420
§B.1 R Commander ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
B.1.1 功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
 XII  目录
B.1.2 (网络)安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
B.1.3 运行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
B.1.4 结构与使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
§B.2 PMG ..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
B.2.1 功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
B.2.2 安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
B.2.3 结构与使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
附录 C R的编程环境 426
§C.1 R WinEdt ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
C.1.1 (网络)安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
C.1.2 运行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
C.1.3 R WinEdt的特点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
C.1.4 R WinEdt的菜单与热键. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
§C.2 Tinn-R .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
§C.3 SciViews R .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
参考文献 431
第一章 R介绍
? R的功能与特点
? R的安装与运行
? R程序包的安装与运行
§1.1 S语言与R
R是一个有着强大统计分析及作图功能的软件系统,在GNU协议General
Public Licence下免费发行, 最先是由Ross Ihaka和Robert Gentleman共同
创立, 现在由R开发核心小组(R Development Core Team)维护, 他们完全自
愿、工作努力负责,并将全球优秀的统计应用软件打包提供给我们共享.
R可以看作是贝尔实验室(Bell Laboratories)的Rick Becker, John
Chambers和Allan Wilks开发的S语言的一种实现或形式. 因此, R是一种
软件也可以说是一种语言. S语言现在主要内含在由Insightful公司经营的S-
PLUS软件中. 我们可以将R和S-PLUS 视为S语言的两种形式, S/S-PLUS方面
的文档都可以直接用于R, 不过R和S在设计理念上存在着许多不同, 关于
这方面的详细内容大家可以参考Ihaka & Gentleman (1996) 或随R同时发布
的R-FAQ[16]. 本书今后主要使用R, 有时也使用R软件、R语言或R系统来称呼
这种形式的S语言.
 2  第一章 R介绍
§1.2 R的特点
现在越来越多的人开始接触、学习和使用R, 因为它有其显著的优点, 主
1) 免费: 尽管S-PLUS是非常优秀的统计分析软件,但你需要支付一笔费用,
而R是一个免费的统计分析软件(环境);
2) 浮点运算功能强大: R可以作为一台高级科学计算器, 因为R同Matlab一
样不需要编译就可执行代码;
3) 不依赖于操作系统: R可以在运行于UNIX, Linux, Windows 和Macintosh
的操作系统上, 它们的安装文件以及安装说明都可以在CRAN
(Comprehensive R Archive Network) 社区上下载;
4) 帮助功能完善: R嵌入了一个非常实用的帮助系统—随软件所附
的pdf或html帮助文件可以随时通过主菜单打开浏览或打印. 通过help命
令可随时了解R所提供的各类函数的使用方法和例子;
5) 作图功能强大: 其内嵌的作图函数能将产生的图片展示在一个独立的窗
口中,并能将之保存为各种形式的文件(例如jpg, png, bmp, ps, pdf, emf,
pictex, xfig);
6) 统计分析能力尤为突出: R内嵌了许多实用的统计分析函数, 统计分析的
结果也能被直接显示出来, 一些中间结果(如p-值、回归系数、残差等) 既
可保存到专门的文件中, 也可以直接用于进一步的分析.
R的部分统计功能整合在R语言的底层,但是大多数功能则以包的形式
提供. 大约有25个包和R同时发布(被称为“标准”和“推荐”包),更多的
包可以通过网上或其CRAN 社区(http://CRAN.R-project.org) 得到, 它们
都配有完整的pdf帮助文件, 且其版本会随R新版本的发行得到更新, 通
过在线(或下载后)安装并加裁后就可融入原来的R中, 实现有针对性的分
7) 可移植性强:
ˆ R程序容易地移植到S-PLUS程序中; 反之S-PLUS的许多过程直接或
稍作修改可用于R;
ˆ R与Matlab有许多相似的地方, 如都可作为高级计算器, 都可不经
过编译直接运行源代码, 但是R侧重于统计分析, 而Matlab侧重于
工程, 例如信号处理. 现在通过R.Matlab程序包可实现两者之间许
多功能的共享, 具体见程序的说明.
1.3 R的资源  3 
ˆ 许多常用的统计分析软件(如SPSS, SAS, Stata及EExcel)的数据文
件都可读入R, 这样其它软件的数据或分析的中间结果可用于R, 并
作出进一步的分析.
8) 较强大的拓展与开发能力: R是开发新的交互式数据分析方法一个非常
好的工具. 例如附录A介绍的R Commander就是一个非常成功的例子. 我
们可以编制自己的函数来扩展现有的R语言, 或制作相对独立的统计分
9) 灵活而不死板: 一般的软件往往会直接展示分析的结果,而R则将这些结
果都存放在一个对象(object)里,所以常常在分析执行结束后并不显示
任何结果. 使用者(特别是初学者或非专业人员)可能会对此感到困惑,其
实这样的特点是非常有用的,因为我们可以有选择地显示我们感兴趣的
结果. 而有的软件(如SAS和SPSS)会同时显示几个窗口,内容太多会使使
用者无从选择和解释.
§1.3 R的资源
R的核心开发与维护小组通过R的主页,即R工程(R Project)网
站(http://www.r-project.org)及时发布有关信息, 包括R的简介、R的更新及
宏包信息、R常用手册、已经出版的关于R的图书、R通讯和会议信息等. 你还
可通过该主页预订邮件,通过电子邮件发出求助或提供帮助.
R的CRAN社区是我们获得软件(及源代码)和资源的主要场所, 通过它或其
镜像站点我们可以下载最新版本及大量的统计程序包(packages).
本书将使用Windows(95及以后)操作系统上的R,其它操作系统上R的使
用方法请参考R相关说明. 除R自带的运行平台R-GUI(R Graphic User’s In-
terface)外, 本书附录A还提供了Windows下几个R的运行平台, R-Commander,
R-WinEdt, R-Sciview和R-Tinn.
§1.4 R的安装与运行
1.4.1 R软件的安装、启动与关闭
R的安装: 从CRAN社区下载最新的封装好的R安装程序到本地计算机,运
行可执行的安装文件, 通常缺省的安装目录为C:\Program Files\R\R-x.x.x,
 4  第一章 R介绍
其中x.x.x为版本号. 安装时可以改变目录,从2.2.0以后还可以选择中文作为基
本语言,这样RGui窗口的菜单都是中文的.
R的启动: 安装完成后点击桌面上R x.x.x快击图标就可启动R的交互式用
户窗口(R-GUI). R是按照问答的方式运行的, 也即你在命令提示符“&”后键
入命令并回车, R就完成一些操作. 例如输入命令
& plot(rnorm(1000))
就可得到图1.1, 此命令的具体含义我们将在后面第二章叙述.
图 1.1 R的启动
R的退出: 在命令行键入q( )或点击R-GUI右上角的叉叉. 退出时可选择
保存工作空间, 缺省文件名为R安装目录的bin子目录下的R.RData. 以后可以
通过命令load( )或通过菜单“文件”下的“载入工作空间”加载,进而继续你
前一次的工作.
1.4.2 R程序包的安装与使用
R程序包的安装有三种方式:
1) 菜单方式: 在已经联网的条件下, 按步骤“程序包?安装程序包...?选
择CRAN镜像服务器?选定程序包”进行实时安装;
1.4 R的安装与运行  5 
2) 命令方式: 在已经联网的条件下, 在命令提示符后键入
& install.packages(&PKname&)
完成程序包PKname的安装.
3) 本地安装: 在无上网条件下,先从CRAN社区下载需要的程序包及与之关
联的程序包, 再按第一种方式通过“程序包”菜单中的“用本机的zip文件
安装程序包”选定本机上的程序包(zip文件)进行安装.
除R的标准程序包(如base包)外,新安装的程序包在使用前必须先载入,
有两种载入方式:
1) 菜单方式: 按步骤“程序包?载入程序包...”, 再从已有的程序包中选定
需要的一个加载;
2) 命令方式: 在命令提示符后键入
& library(“PKname”)
来加载程序包PKname.
若有必要,我们还可通过步骤“程序包?更新程序包...”对本机的程序包
进行实时更新.
注意: R命令对大小写敏感, 这在使用命令方式安装和载入程序包时应特别注
 6  第一章 R介绍
第一章习题
1.1 R与你学过的统计软件, 如SPSS, SAS, Matlab有何区别, 其主要的特点
1.2 到CRAN社区(http://cran.r-project.org/)下载并安装R的最新(中
文)版本, 并尝试R的启动与退化.
1.3 R可以作为一台很方便的计算器. 任取二个非零实数, 试用R完成它们
的加、减、乘、除、乘方、开方、指数、对数等运算.
1.4 John Fox基于R开发了一套进行基础统计分析的菜单驱动的分析系统,
称为R Commander. 附录A介绍了一种菜单式的安装方法. 另一种是采用命令
方式进行安装与加载, 其步骤为:
& install.packages(&Rcmdr&)
来安装程序包Rcmdr(需要等待几分种);
2) 再用命令
& load(&Rcmdr&)
加载程序包Rcmdr.
R Commander的结构与使用方法参见附录A的说明.
1.5 animation是由谢益辉建立的概率统计动态演示程序包, 请用命令或菜
单的方法安装并加载animation, 并尝试下面的二个例子:
ˆ 蒲丰投针试验:
& buffon.needle(nmax = 500, interval = 0)
ˆ 中心极限定理:
& f = function(n) rchisq(n, 5)
& clt.ani(FUN = f)
具体使用方法参见程序包中的pdf说明文件.
1.4 R的安装与运行  7 
1.6 登 录R的 社 区 主 页http://cran.r-project.org/, 并 进 入 左
侧Software下的Packages, 浏览并感受R所提供的资源(程序包). 选择其中
感兴趣的进行安装与试用, 例如概率统计教学演示程序包TeachingDemos和其
在R Commander下的插件RcmdrPlugin.TeachingDemos.
第二章 R的基本原理与核心
? R的基本原理
? R的求助方法
? R的主要数据结构
? R的图形功能
? R的编程方法
§2.1 R的基本原理
如第一章所述, 如果R已经安装在你的计算机中, 它就能立即运行一些可
执行的命令了. R默认的命令提示符是‘?’,它表示正在等待输入命令. 如果
一个语句在一行中输不完, 按回车键, 系统会自动产生一个续行符“+”, 语句
或命令输完后系统又会回到命令提示符. 在同一行中输入多个命令语句, 则需
要使用分号来隔开. 在Windows系统中, 能直接运行下拉菜单中的一些操作命
令(如在线帮助,打开文件等,见图1.1). 在学习一些R的命令之前,让我们先了
解R的基本工作原理.
首先, 同Matlab一样, R是一种编程语言, 但我们没有必要对此感到害怕,
因为R是一种解释性语言,而不是编译语言, 也就意味着输入的命令能够直接
被执行, 而不需要像其它语言(如C和FORTAN)需要编译和连接等操作.
其次, R的语法非常简单和直观. 例如,线性回归的命令lm(yx)表示
以x为自变量,y为响应变量来拟合一个线性模型. 合法的R函数总是带有圆括
号的形式,即使括号内没有内容(如ls( )). 如果直接输入函数名而不输入圆
2.1 R的基本原理  9 
括号, R则会自动显示该函数的一些具体内容. 因此在R中所有的函数后都带
有圆括号以区别于对象(object). 当R运行时,所有变量、数据、函数及结果都
以对象的形式存入计算机的活动内存中,并冠有相应的名字代号. 我们可以通
过一些运算(如算术、逻辑、比较等)和一些函数(其本身也是对象)来对这些对
象进行操作.
运行一个R函数可能不需要设定任何参量,原因是所有的参量都可以被默
认为缺省值,当然也有可能该函数本身就不含任何参量.
再次, 在R中进行的所有操作都是针对存储在活动内存中的对象的. 数据、
结果或图表的输入与输出都是通过对计算机硬盘中的文件读写而实现. 用户
通过输入一些命令调用函数,分析得出的结果可以被直接显示在屏幕上,也可
以存入某个对象或被写入硬盘(如图片对象). 因为产生的结果本身就是一种对
象,所以它们也能被视为数据并能像一般数据那样被处理分析. 数据文件即可
从本地磁盘读取也可通过网络传输从远程服务器端获得.
最后, 所有能使用的R函数都被包含在一个库(library) 中, 该库存
放在R安装文件夹的library目录下. 这个目录下含有具有各种功能的
包(packages),各个包也是按照目录的方式组织起来的. 其中名为base的
包是R的核心,因为它内嵌了R语言中所有像数据读写与操作这些最基本的函
数. 在上述目录中的每个包内,都有一个子目录R,这个目录里又都含有一个
与此包同名的文件, 该文件正是存放所有函数的地方.
R语言中最简单的命令莫过于通过输入一个对象的名字来显示其内容了.
例如,一个名为n的对象,其内容是数值10:
方括号中的数字1表示从n的第一个元素开始显示. 其实该命令的功能在这里
与函数print( )相似,输出结果与print(n) 相同. 对象的名字必须是以一个
字母开头(A-Z 或a-z), 中间可以包含字母、数字(0–9)、点(.)及下划线( ). 因
为R对对象的名字区分大小写,所以x和X就可以代表两个完全不同的对象.
一个对象可以通过赋值操作来产生,R语言中的赋值符号一般是由一个尖
括号与一个负号组成的箭头形标志, 该符号可以是从左到右的方向,也可以相
反. 赋值也可以用函数assign( )实现, 还可以用等号“=”, 但它们很少使用.
 10  第二章 R的基本原理与核心
& assign(&n&, 10)
当然你也可以只是输入函数或表达式而不把它的结果赋给某个对象(如果这样
在窗口中展示的结果将不会被保存到内存中), 这时我们就可将R作为一个计
算器使用. 下面的例子说明了R中的算术运算符(加、减、乘、除、乘方、开方、
指数)的使用方法.
& ((10 + 2) * 5-2^4)/4
& sqrt(3)+exp(-2)
[1] 1.867386
更为常用的是常量、向量、矩阵、数组等其它对象的赋值与运算, 我们将在后
所有的高级语言都有注释语句, R中使用井号(#)表示注释的开始.
§2.2 R的在线帮助
学习一门编程语言离不开语句、函数和编程的语法和语义,R中的程序包
都是由大量的进行统计分析的函数,它们的含义和使用方法对于熟练使用R进
行数据分析是至关重要的. 在此我们将R的帮助分成两类:
1) 关于R的基本知识: 通过命令
2.2 R的在线帮助  11 
& help.start( )
或R用户界面上的“帮助”菜单的“html帮助”得到.
i. R的常见问题(FAQ): 系统提供了二个版本,其一为“R FAQ”,其二
为“R for Windows FAQ”, 它们随R的新版本同时发布与更新,内
容包括R的特点、安装、使用、界面、编程规则等.
ii. R帮助手册,也随新版本发布与更新,共有6本手册: An Introduction
to R, R Reference Manual, R Data input/output, R Language Def-
inition, Writing R Extensions, R Installation and Administration.
“帮助”菜单提供了它们的PDF电子版本, 便于打印. 初学者可看一
下其中的第一本.
2) 关于R中的函数或关键字符:
& help(fun)
会立即显示名为“fun”函数的帮助页面, 而命令
& help(&char&)
则会显示某个具有特殊语法意义字符“char”的帮助页面. 页面的
第一行一般会显示此函数或字符的所属的程序包(package),然后是
标题,标题下面则是一些详细信息:
Description: brief description.
Usage: for a function, gives the name with all its arguments and
the possible options (with the corresponding default values); for
an operator gives the typical use.
Arguments: for a function, details each of its arguments.
Details: detailed description.
Value: if applicable, the type of object returned by the function or
the operator.
See Also: other help pages close or similar to the present one.
Examples: some examples which can generally be executed with-
out opening the help with the function example.
 12  第二章 R的基本原理与核心
默认状态下,函数help( )只会在被载入内存的程序包中搜索. 选
项try.all.package 在缺省值是FALSE, 但如果把它设为TRUE,则可
在所有已安装的程序包中进行搜索. 如果读者确实想打开这样的页
面而所属程序包又没有被载入内存时,可以使用package这个选项.
请读者试试下面的两个命令.
& help(&bs&,try.all.packages=TRUE)
& help(&bs&,package = &splines&)
& apropos(fun)
& apropos(&fun&)
找出所有在名字中含有指定字符串“fun”的函数,但只会在被载入
内存中的程序包中进行搜索.
注意:如果“fun”不是完整的函数名, 则前者会出错;
& help.search(&char&)
列出所有在帮助页面含有字符“char”的函数, 它的搜索范围
比apropos(&fun&)更广;
& find(fun)
& find(&fun&)
得到名为“fun”函数所在的程序包;
& args(fun)
& args(&fun&)
得到名为“fun”函数的自变量列表.
2.3 一个简短的R会话  13 
对初学者而言,帮助中例子(Examples)部分的信息是很有用的. 而仔细阅读自
变量(Arguments)中的一些说明也是非常有必要的. 帮助中还包含了其它一些
说明部分,如注释(Notes), 参考文献(References)或作者(Author(s))等.
§2.3 一个简短的R会话
下面通过一个具体的例子来说明如何利用R软件进行数据的统计分析,
此例使用R内嵌的数据集mtcars. 它在datasets(数据)包中, 此包像base一样
随R的启动自动加载.
数据的描述
mtcars package:datasets R Documentation
?mtcars的结果
Motor Trend Car Road Tests
Description:
The data was extracted from the 1974 _Motor Trend_
US magazine, and comprises fuel consumption and 10
aspects of automobile design and performance for 32
automobiles (1973-74 models).
A data frame with 32 observations on 11 variables.
[, 1] mpg Miles/(US) gallon
[, 2] cyl Number of cylinders
[, 3] disp Displacement (cu.in.)
[, 4] hp Gross horsepower
[, 5] drat Rear axle ratio
 14  第二章 R的基本原理与核心
[, 6] wt Weight (lb/1000)
[, 7] qsec 1/4 mile time
[, 8] vs V/S
[, 9] am Transmission (0 = automatic, 1 = manual)
[,10] gear Number of forward gears
[,11] carb Number of carburetors
它告诉我们数据集metars的基本信息. 它是美国Motor Trend收集
的年期间总共32辆汽车的11个指标: 油耗及10个与设计及性能
方面的指标.
数据的浏览与编辑
1) 数据的浏览
ˆ 命令
可以显示数据集mtcars中全部的32个观测值.
ˆ 命令
& head(mtcars)
仅显示数据集mtcars中前7个观测值.
ˆ 命令
& names(mtcars)
仅显示数据集mtcars中的变量, 在此为11个指标.
2) 数据的编辑
数据的编辑主要有两种方式(函数):
ˆ 命令
& data.entry(mtcars)
通过R的数据编辑器打开数据集mtcars, 除了浏览数据集外,这里
我们还可以对变量及其观测值进行修改.
ˆ 命令
& MTcars &- edit(mtcars)
同样启动R的数据编辑器, 在此可对原来的数据集mtcars进行编辑,
完成后将生成的新的数据集赋给MTcars, 而原来的数据集保持不变.
如果你要修改原来的数据集,使命令edit( )前后的数据集同名即
可. 因此命令edit(mtcars) 将无法完成对数据的修改. 命令
2.3 一个简短的R会话  15 
& xnew &- edit(data.frame( ))
可以编辑生成新的数据集xnew. 另外, 对于一维的数据, edit( )打
开的是R Editor. 试比较下面的例子中两个命令的区别
& x &- c(10.4, 5.6, 3.1, 6.4, 21.7)
[1] 10.4 5.6 3.1 6.4 21.7
& data.entry(x)
ˆ 命令
& fix(mtcars)
可以完成数据集mtcars的直接修改. 因此它等价于命令
& mtcars &- edit(mtcars)
1) 使用上面的三个命令将挂起R的对话窗口(R Console), 关闭编辑器即可
继续进行R的对话.
2) 我们这里说的数据集就是下面一小节要讲的数据框(data frame). 数据对
象中除了上面已经出现的向量和数据框外,下面一节还要讲矩阵、数组、
和列表. 命令data.entry( )和edit( )都可用于编辑向量、矩阵、数据
框和列表,前者启用的都是R的数据编辑器, 后者有所不同: 对于向量、
列表和数组edit( )启用的是R Editor.
3) 尽管我们在R中可以浏览与编辑数据集mtcars, 但它们还无法对此数据
集进行操作(分析), 例如命令
无法看到变量mpg(每加仑公里数)的具体数值. 这时我们需要激活或挂
接(attach)数据集mtcars. 命令
& attach(mtcars)
就激活mtcars, 使之成为当前的数据集. 这时通过命令
就可浏览变量mpg的32个值,其它分析我们将在后面进行.
 16  第二章 R的基本原理与核心
属性数据的分析
变量cyl(汽缸数)为属性变量, 命令
& table(cyl)
告诉我们变量cyl取3个值:4,6,8,相应的频数为11, 7, 14. 而命令
& barplot(table(cyl))
显示了cyl的频数直方图. 要注意的是, 命令
& barplot(cyl)
在此不适用, 它仅适用于数值型变量.
数值型数据的分析
统计分析中主要涉及数值型数据. 对此我们可考查它们的图形特征及常用
ˆ 画茎叶图(stem-and-leaf plot), 命令为
& stem(mpg).
ˆ 画直方图, 命令为
& hist(mpg).
ˆ 画框须图(stem-and-leaf plot), 命令为
& boxplot(mpg).
ˆ 计算平均值, 命令为
& mean(mpg).
ˆ 计算截去10%的平均值, 命令为
& mean(mpg, trim = .1).
ˆ 按分组变量cyl计算mpg的分组平均值, 命令为
& tapply(mpg,cyl,mean)
ˆ 计算cyl为4的那些mpg的平均值, 命令为
& mean(mpg[cyl == 4]).
2.3 一个简短的R会话  17 
ˆ 计算四分位数的极差(interquartile range), 命令为
& IQR(mpg).
ˆ 计算样本常用的分位数: 极小、极大、中位数及两个四分位数, 命令为
& quantile(mpg)
& fivenum(mpg)
ˆ 计算由向量prob给定的各概率处的样本分位数, 命令为
& quantile(mpg, probs)
例如probs = c(0.1, 0.5, 99.5)/100. 可见, quantile( )比fivenum( )更
ˆ 计算常用的描述性统计量, 它们分别是最小值(Min.)、第一四分位数(1st
Qu.)、中位数(Median)、平均值(Mean)、第三分位数(3rd Qu.)和最大
值(Max.), 命令为
& summary(mpg).
ˆ 计算标准差, 命令为
& sd(mpg).
ˆ 计算中位绝对离差(median absolute deviation), 命令为
& mad(mpg).
寻找二元关系
ˆ 画二维散点图, 例如cyl与mpg的散点图, 可通过下面的命令得到.
& plot(cyl,mpg)
注意: 相仿命令
plot(hp,mpg)
可得到hp与mpg的散点图. 但32个点对应了不同的汽缸, 因此按cly为图
例作出散点图更清晰, 命令为
& plot(hp,mpg,pch=cyl)
& legend(250,30,pch=c(4,6,8),
& legend=c(&4 cylinders&,&6 cylinders&,&8 cylinders&))
 18  第二章 R的基本原理与核心
ˆ 拟合线性回归, 例如命令
& z &- lm(cyl ~ mpg)
lm(formula = cyl ~ mpg)
Coefficients:
(Intercept) mpg
线性回归的截距为11.2607, 斜率为-0.2525.
ˆ 相关系数(或R2)考查回归拟合好坏的程度. 命令
& cor(cyl,mpg)
可以得到相关系数(Pearson correlation coefficient)R, 其平方
& cor(cyl,mpg)^2
得到R2为0.72618, 表明数据变化的72.6%可以用汽缸数(cyl)与每加仑的
英里数(mpg)来刻划.
ˆ 残差分析:
& lm.res &- lm(cyl ~ mpg) # 将回归分析的结果作为对象
# 保存到lm.res中
& lm.resids &- resid(lm.res) # 提取残差向量
& plot(lm.resids) # 考查残差的散点图
& hist(lm.resids) # 考查残差的直方图: 钟型?
& qqnorm(lm.resids) # 残差的QQ图是否落在直线上?
结论: 从残差分析我们可以得出汽车的汽缸数与每加仑的里程数可以用线性回
结束分析并退出R
& detach(mtcars) # 从内存中清除数据集mtcars
& q( ) # 退出R
2.4 R的数据结构  19 
§2.4 R的数据结构
2.4.1 R的对象与属性
我们已经知道R通过一些对象来运行,这些对象是用它们的名称和内容来
刻画的,其次也通过对象的数据类型即属性来刻画. 所有的对象都有两个内在
属性:类型和长度. 类型是对象元素的基本种类,共有四种:
ˆ 数值型, 包括
– 单精度实型
– 双精度实型
ˆ 字符型
ˆ 复数型1
ˆ 逻辑型(FALSE、TRUE或NA)
虽然还存在其它的类型,例如函数或表达式, 但是它们并不能用来表示数
据;长度是对象中元素的数目. 对象的类型和长度可以分别通过函数mode( )
和length( )得到. 例如
[1] &numeric&
& length(x)
& A &- &Gomphotherium&; compar &- TRUE; z &- 1i
& mode(A); mode(compar); mode(z)
[1] &character&
[1] &logical&
[1] &complex&
无论什么类型的数据,缺失数据总是用NA(Not Available的意思)来表示; 对很
大的数值则可用指数形式表示:
1本书不讨论复数型
 20  第二章 R的基本原理与核心
& N &- 2.1e23
[1] 2.1e+23
R可以正确地表示无穷的数值,如用Inf和-Inf表示 8和8,或者用NaN(Not
a Number 的意思)表示不是数字的值.
& x &- 5/0
& Inf - Inf
Warning message:
产生了NaNs in: sqrt(-17)
&sqrt(-17+0i) # 按照复数进行运算
[1] 0+4.123106i
字符型的值输入时须加上双引号&,如果需要引用双引号的话,可以让它
跟在反斜杠“\”后面, 在某些函数如cat( )的输出显示或write.table( )写
入磁盘时会被以特殊的方式处理. 例如
& x &- &Double quotes \& delimitate R's strings.&
[1] &Double quotes \& delimitate R's strings.&
Double quotes & delimitate R's strings.
另一种表示字符型变量的方法,即用单引号(’)来界定变量,这种情况下不需
要用反斜杠来引用双引号.
2.4 R的数据结构  21 
& x &- 'Double quotes & delimitate R\'s strings.'
[1] &Double quotes \& delimitate R's strings.&
表2.1概括了表示数据对象的类别:
表 2.1 数据对象及类型
对象 类型 同一个对象中
有多种类型?
向量 数值型,字符型,复数型,逻辑型 否
因子 数值型, 字符型 否
数组 数值型,字符型,复数型,逻辑型 否
矩阵 数值型,字符型,复数型,逻辑型 否
数据框 数值型,字符型,复数型,逻辑型 是
时间序列(ts) 数值型,字符型,复数型,逻辑型 否
列表 数值型,字符型,复数型,逻辑型, 是
函数,表达式,. . .
1) 向量是一个变量(的取值),是R中最常用、最基本的操作对象;因子是一
个分类变量;数组是一个k维的数据表;矩阵是数组的一个特例,其维
数k  2.
注意: 数组或者矩阵中的所有元素都必须是同一种类型的;数据框是由
一个或几个向量和(或)因子构成,它们必须是等长的,但可以是不同的
数据类型;“ts”表示时间序列数据,它包含一些额外的属性,例如频率
和时间;列表可以包含任何类型的对象,包括列表!
2) 对于一个向量,用它的类型和长度足够描述数据;而其它的对象则另需
一些额外信息,这些信息由外在的属性给出, 例如这些属性中的表示对象
 22  第二章 R的基本原理与核心
维数的dim. 比如一个2行2列的的矩阵,它的dim是一对数&#2],但是其
3) R中有三种主要类型的运算符, 表2.2是这些运算符的列表. 其中数学运算
符和比较运算符作用于两个元素上(例如x + y, a & b);数学运算符不只
是作用于数值型或复数型变量,也可以作用在逻辑型变量上;在后一种
情况中,逻辑型变量被强制转换为数值型. 比较运算符可以适用于任何
类型:结果是返回一个或几个逻辑型变量; 逻辑型运算符适用于一个(对
于“!”运算符)或两个逻辑型对象(对于其它运算符),并且返回一个(或
几个)逻辑性变量. 运算符“逻辑与”和“逻辑或”存在两种形式:“&”
和“|”作用在对象中的每一个元素上并且返回和比较次数相等长度的逻
辑值;“&&”和“||”只作用在对象的第一个元素上.
表 2.2 运算符
数学运算 比较运算 逻辑运算
+ 加法 & 小于 ! x 逻辑非
- 减法 & 大于 x & y 逻辑与
* 乘法 &= 小于或等于 x && y 同上
/ 除法 &= 大于或等于 x | y 逻辑或
^ 乘方 == 等于 x || y 同上
%% 模 != 不等于 xor(x, y) 异或
2.4.2 浏览对象的信息
函数ls( )的功能是显示所有在内存中的对象. ls( )只会列出对象名,例
& name &- &Carmen&; n1 &- 10; n2 &- 100; m &- 0.5
[1] &m& &n1& &n2& &name&
2.4 R的数据结构  23 
如果只要显示出在名称中带有某个指定字符的对象,则通过设定选项pattern
来实现(可简写为pat) ):
& ls(pat = &m&)
[1] &m& &name&
如果进一步限定显示名称中以某个字母开头的对象,则可使用命令:
& ls(pat = &^m&)
运行函数ls.str( )将会显示内存中所有对象的详细信息:
& ls.str( )
m : num 0.5 n1 : num 10 n2 : num 100 name : chr &Carmen&
在ls.str( )函数中另一个非常有用的选项是max.level, 它将规定显示
有关对象信息的详细级别. 缺省情况下,ls.str( ) 将会列出关于对象的所有
信息,包括数据框、矩阵,或数据列表的详细信息, 显示结果可能会很长. 但如
果设定max.level =-1 就可以避免这种情况了. 试比较:
& M &- data.frame(n1, n2, m)
& ls.str(pat = &M&)
M : `data.frame': 1 obs. of 3 variables:
$ n1: num 10
$ n2: num 100
$ m : num 0.5
& ls.str(pat=&M&, max.level=-1)
M : `data.frame': 1 obs. of 3 variables:
要在内存中删除某个对象,可利用函数rm( ). 例如
ˆ 运行rm(x)将会删除对象x
ˆ 运行rm(x,y)将会删除对象x和y
ˆ 运行rm(list=ls( ))则会删除内存中的所有对象
ˆ 运行rm(list=ls(pat=&^m&))则会删除对象中以字母m开头的对象
 24  第二章 R的基本原理与核心
下面我们通过具体的例子说明向量(包括数值型向量、字符型向量、逻辑
型向量和因子型向量)、矩阵、数据框、列表和时间序列的构成方法.
2.4.3 向量的建立
数值型向量的建立
统计分析中最为常用的是数值型的向量, 它们可用下面的四种函数建立:
1) seq( )或“:” # 若向量(序列)具有较为简单的规律
2) rep( ) # 若向量(序列)具有较为复杂的规律
3) c( ) # 若向量(序列)没有什么规律
4) scan( ) # 通过键盘逐个输入
[1] 1 2 3 4 5 6 7 8 9 10
[1] 0 1 2 3 4 5 6 7 8 9
& 1:(10-1)
[1] 1 2 3 4 5 6 7 8 9 # 注意括号有无的区别
& z &- seq(1,5,by=0.5) # 等价于 seq(from=1,to=5,by=0.5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
& z &- seq(1,10,length=11) # 等价于 seq(1,10,length.out=11)
[1] 1.0 1.9 2.8 3.7 4.6 5.5 6.4 7.3 8.2 9.1 10.0
& z &- rep(2:5,2) # 等价于 rep(2:5, times=2)
[1] 2 3 4 5 2 3 4 5
& z &- rep(2:5,rep(2,4))
[1] 2 2 3 3 4 4 5 5
& z &- rep(1:3, times = 4, each = 2)
2.4 R的数据结构  25 
[1] 1 1 2 2 3 3 1 1 2 2 3 3 1 1 2 2 3 3 1 1 2 2 3 3
& z &- x&-c(42,7,64,9)
[1] 42 7 64 9
& z &- scan( ) # 通过键盘建立向量
1: 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
Read 9 items
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
& z &- sequence(3:5)
[1] 1 2 3 1 2 3 4 1 2 3 4 5
& z &- sequence(c(10,5))
[1] 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5
字符型向量的建立
字符和字符向量在R中广泛使用,比如图表的标签. 在显示的时候,相应
的字符串由双引号界定,字符串在输入时可以使用单引号(’)或双以号(”). 引
号(”)在输入时应当写作\”. 字符向量可以通过函数c( )连接. 函数paste()可
以接受任意个参数,并从它们中逐个取出字符并连成字符串,形成的字符串的
个数与参数中最长字符串的长度相同. 如果参数中包含数字的话,数字将被强
制转化为字符串. 在默认情况下,参数中的各字符串是被一个空格分隔的,不
过通过参数sep=string 用户可以把它更改为其他字符串,包括空字符串. 例
& Z &- c(&green&,&blue sky&,&-99&)
[1] &green& &blue sky& &-99&
& labs &- paste(c(&X&,&Y&), 1:10, sep=&&)
[1] &X1& &Y2& &X3& &Y4& &X5& &Y6& &X7& &Y8& &X9& &Y10&
 26  第二章 R的基本原理与核心
逻辑型向量的建立
与数值型向量相同,R允许对逻辑向量进行操作. 一个逻辑向量的值可以
是TRUE, FALSE和NA. 前两个通常简写为T和F2 . 逻辑向量是由条件给出的. 譬
& x &- c(10.4, 5.6, 3.1, 6.4, 21.7)
& temp &- x & 13
[1] FALSE FALSE FALSE FALSE TRUE
temp为一个与x长度相同,元素根据是否与条件相符而由TRUE或FALSE组成的
向量. 逻辑向量可以在普通的运算中被使用,此时它们将被转化为数字向
量,FALSE当做0, 而TRUE当做1. 再看几个简单的例子:
& !(7==6)==1
& (7==9)|(7&0)
& (7==9)&(7&0)
因子型向量的建立
一个因子或因子向量不仅包括分类变量本身, 还包括变量不同的可能水
平(即使它们在数据中不出现). 因子利用函数factor( )创建. factor( )的调
用格式如下:
factor(x, levels = sort(unique(x), na.last = TRUE),
factor( )的调用格式
labels = levels, exclude = NA, ordered = is.ordered(x))
2注意T和F仅仅是默认被指向TRUE和FALSE的变量,而不是系统的保留字.
2.4 R的数据结构  27 
说明: levels 用来指定因子的水平(缺省值是向量x中不同的值);labels用来
指定水平的名字;exclude表示从向量x中剔除的水平值;ordered是一个逻辑
型选项, 用来指定因子的水平是否有次序. 这里x可以是数值型或字符型, 这样
对应的因子也就称为数值型因子或字符型因子. 因此, 因子的建立可以通过字
符型向量或数值型向量来建立, 且可以转化.
1) 将字符型向量转换成因子
& a &- c(&green&, &blue&, &green&, &yellow&)
& a &- factor(a)
[1] green blue green yellow
Levels: blue green yellow
2) 将数值型向量转换成因子
& b &- c(1,2,3,1)
& b &- factor(b)
[1] 1 2 3 1
Levels: 1 2 3
3) 将字符型因子转换为数值型因子
& a &- c(&green&, &blue&, &green&, &yellow&)
& a &- factor(a)
& levels(a)&-c(1,2,3,4)
[1] 2 1 2 3
Levels: 1 2 3 4
& ff &- factor(c(&A&, &B&, &C&), labels=c(1,2,3))
Levels: 1 2 3
4) 将数值型因子转换为字符型因子
 28  第二章 R的基本原理与核心
& b &- c(1,2,3,1)
& b &- factor(b)
& levels(b) &- c(&low&, &middle&, &high&)
[1] low middle high low
Levels: low middle high
& ff &- factor(1:3, labels=c(&A&, &B&, &C&))
Levels: A B C
注:函数levels( )用来提取一个因子中可能的水平值, 例如
& ff &- factor(c(2, 4), levels=2:5)
Levels: 2 3 4 5
& levels(ff)
[1] &2& &3& &4& &5&
5) 函数gl( )能产生规则的因子序列. 这个函数的用法是gl(k,n),其中k是
水平数, n是每个水平重复的次数. 此函数有两个选项:length用来指定
产生数据的个数, label用来指定每个水平因子的名字. 例如:
& gl(3, 5)
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
Levels: 1 2 3
& gl(3, 5, length=30)
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
Levels: 1 2 3
& gl(2, 6, label=c(&Male&, &Female&))
[1] Male Male Male Male Male Male
[7] Female Female Female Female Female Female
Levels: Male Female
& gl(2, 10)
[1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2
2.4 R的数据结构  29 
Levels: 1 2
& gl(2, 1, length=20)
[1] 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
Levels: 1 2
& gl(2, 2, length=20)
[1] 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2
Levels: 1 2
数值型向量的运算
向量可以用于算术表达式中,操作是按照向量中的元素一个一个进行的.
同一个表达式中的向量并不需要具有相同的长度, 如果它们的长度不同,表达
式的结果是一个与表达式中最长向量有相同长度的向量, 表达式中较短的向量
会根据它的长度被重复使用若干次(不一定是整数次),直到与长度最长的向量
相匹配, 而常数将被不断重复— 这一规则称为循环法则(recycling rule). 例
& x &- c(10.4, 5.6, 3.1, 6.4, 21.7)
& y &- c(x,0,x)
& v &- 2*x + y + 1
产生一个长度为11的新向量v, 其中2  x被重复2.2次,y 被重复1次,常数1被重
复11次. 为了方便使用,我们对向量的运算稍作细分:
ˆ 向量与一个常数的加、减、乘、除为向量的每一个元素与此常数进行加、
减、乘、除;
ˆ 向量的乘方( ^ )与开方(sqrt)为每一个元素的乘方与开方, 这对
像log, exp, sin, cos, tan 等普通的运算函数同样适用;
ˆ 同样长度向量的加、减、乘、除等运算为对应元素进行加、减、乘、除等;
ˆ 不同长度向量的加、减、乘、除遵从循环法则(recycling rule), 但要注意
这种场合通常要求向量的长度为倍数关系, 否则会出现警告:“长向量并
非是短向量的整数倍”.
下面举例说明
 30  第二章 R的基本原理与核心
& 5+c(4,7,17)
[1] 9 12 22
& 5*c(4,7,17)
[1] 20 35 85
& c(-1,3,-17)+c(4,7,17)
[1] 3 10 0
& c(2,4,5)^2
[1] 4 16 25
& sqrt(c(2,4,25))
[1] 1...000000
& 1:2+1:4
[1] 2 4 4 6
& 1:4+1:7
[1] 2 4 6 8 6 8 10
Warning message:
长的目标对象长度不是短的目标对象长度的整倍数 in: 1:4 + 1:7
常用统计函数
最后列出统计分析中常用的函数与作用(见表2.1).
图 2.1 统计分析中常用的函数与作用
统计函数 作用
maxpxq 返回向量x中最大的元素
minpxq 返回向量x中最小的元素
which.maxpxq 返回向量x中最大元素的下标
which.minpxq 返回向量x中最小元素的下标
meanpxq 计算样本(向量)x的均值
medianpxq 计算样本(向量)x的中位数
madpxq 计算中位绝对离差
2.4 R的数据结构  31 
varpxq 计算样本(向量)x的方差
sdpxq 计算向量x的标准差
rangepxq 返回长度为2的向量: cpminpxq,maxpxqq
IQRpxq 计算样本的四分位数极差
quantilepxq 计算样本常用的分位数3
summarypxq 计算常用的描述性统计量(最小、最大、平均值、中
位数和四分位数)
lengthpxq 返回向量x的长度
sumpxq 给出向量x的总和
prodpxq 给出向量x的乘积
revpxq 取向量x的逆序
sortpxq 将向量x按升序排序, 选项decreasing=TRUE表示
orderpxq 返回x的秩(升序), 选项decreasing=TRUE得到降
rankpxq 返回x的秩
cumsumpxq 返 回 向 量x和 累 积 和(其 第i个 元 素 是
从xr1s到xris的和)
cumprodpxq 返 回 向 量x和 累 积 积(其 第i个 元 素 是
从xr1s到xris的积)
cumminpxq 返 回 向 量x和 累 积 最 小 值(其 第i个 元 素 是
从xr1s到xris的最小值)
cummaxpxq 返 回 向 量x和 累 积 最 大 值(其 第i个 元 素 是
从xr1s到xris的最大值)
3quantile(x)仅计算x的极小、极大、中位数及两个四分位数, 更一般地使用quantile(x, probs)可计算
给定向量probs处的样本分位数.
 32  第二章 R的基本原理与核心
varpx, yq 计算样本(向量)x与y的协方差
covpx, yq 计算样本(向量)x与y的协方差
corpx, yq 计算样本(向量)x与y的相关系数
outerpx, yq 计算样本(向量)x与y的外积4
函数maxpq, minpq, median( ), var( ), sd( ), sum( ), cumsum( ),
cumprod( ), cummax( ), cummin( )对于矩阵及数据框的意义有方向性. 对于
矩阵, cov( )和cor( ) 分别用于求矩阵的协方差阵和相关系数阵, 这些将在
后面举例说明.
向量的下标(index)与子集(元素)的提取
选择一个向量的子集(元素)可以通过在其名称后追加一个方括号中的索
引向量来完成. 更一般地,任何结果为一个向量的表达式都可以通过追加索引
向量来选择其中的子集. 这样的索引向量有四种不同的类型.
1) 正整数向量 — 提取向量中对应的元素. 这种情况下索引向量中的值必
须在集合{1, 2,    , lengthpxq}中. 返回的向量与索引向量由相同的长度,
且按索引向量的顺序排列. 例如x[6] 是x的第六个元素,而
& x[1:10] 选取了x的前10个元素(假设x的长度不小于10).
& x[c(1,4)]
取出向量x的第1和第4个元素.
2) 负整数向量 — 去掉向量中与索引向量对应的元素. 例如
& y &- x[-(1:5)]
从x中去除前5个元素得到y.
3) 字符串的向量. 这种可能性只存在于拥有names属性并由它来区分向量中
元素的向量. 这种情况下一个由名称组成的子向量起到了和正整数的索
引向量相同的效果. 例如
4函数outer( )的一般形式为(x,y,&op&), 其中op可为任一四则运算符.
2.4 R的数据结构  33 
& fruit &- c(5, 10, 1, 20)
& names(fruit) &- c(&orange&, &banana&, &apple&, &peach&)
orange banana apple peach
& l

我要回帖

更多关于 rownames 的文章

 

随机推荐