书海网短评:
如果你打算用R进行统计计算和数据可视化,本书就是关于使用开源R语言(软件环境)快速解决上述问题的实用指导教程。通过本书,你将学会如何编写R函数以及借助R包进行数据预处理、可视化以及数据分析。作者用取自制医学、商业和体育领
如果你打算用R进行统计计算和数据可视化,《R语言核心技术手册(第2版)》就是关于使用开源R语言(软件环境)快速解决上述问题的实用指导教程。通过《R语言核心技术手册(第2版)》,你将学会如何编写R函数以及借助R包进行数据预处理、可视化以及数据分析。作者用取自制医学、商业和体育领域的丰富案例对上述问题进行了讲解。
√多达数百个实例的R教程,快速入门R语言
√探索R语言的语法、对象和其他语言细节
√在网站上可找到包括Bioconductor在内的数千个用户共享的R包
√学习如何用R完成数据分析预处理
√基于Rgraphics、lattice和ggplot2包进行数据可视化
√使用R语言计算概率分布、统计检验以及拟合模型
√基于Hadoop并行编程提升大规模运算的效率
√学习R语言的完整参考手册
第二版的内容依据R2.14和R2.15进行了更新,并新增了R高性能计算、基于ggplot2的数据可视化和利用Hadoop做并行运算等章节。
R是一款优秀的开源统计应用语言,它直观、易用、低成本,而且还有庞大的社区支持,随着数据挖掘技术的兴起,R语言得到了广泛的应用。《R语言核心技术手册(第2版)》介绍从安装R软件到基本语法以及应用的全过程,可以帮助你全面地学习和使用R。《R语言核心技术手册(第2版)》共6部分,26章,基本涵盖了R语言的所有功能,而且提供了大量的实例说明运用R语言绘图、分析数据以及拟合统计模型的过程。书中虽然涉及很多统计学理论和知识,但并不是《R语言核心技术手册(第2版)》的重点。
《R语言核心技术手册(第2版)》增加了一些处理数据的新章节,将绘图章节集中放在“可视化篇”,同时针对R的版本变化做了一些升级。
刘思喆,中国人民大学统计学院科班出身,国内资深R领域专家,拥有10年R语言使用经验,中国R语言会议联合发起人。《153分钟学会R》作者,《Rreferencecard》译者。“统计之都”理事会成员,R语言版版主;电信、互联网、彩票行业资深数据挖掘专家。CSDN大数据技术论坛、DATAWorldForum、中国人民大学数据挖掘中心特邀讲师。
R是一种免费且功能强大的语言,但不易入门。《R语言核心技术手册(第2版)》是学习R语言的不二之选,是每个数据科学家必备的案头参考书。
——DJPatil
Greylock公司房产领域数据科学家
R迅速蹿红为数据分析的通用语言,《R语言核心技术手册(第2版)》堪称是学习R语言的入门书籍。它涵盖了包括数据可视化、时间序列分析等在内的数据科学能包罗的所有领域。
——AnthonyGoldbloom
Kaggle公司创始人兼CEO
前言xvi
I基础篇
第1章获取和安装R
R版本
R的安装
Windows
MacOSX
Linux和UNIX系统
第2章R的用户界面
R的图形用户界面
Windows
MacOSX
Linux和UNIX程序
R控制台
命令行编辑
批处理模式
在Excel中使用R
RStudio
其他运行R的方式
第3章简短的示例
基本操作
函数
变量
数据结构简介
对象和类
模型和公式
图表
获得帮助
第4章R包
R包概览
列示本地库中的R包
加载R包
在Windows和Linux系统下加载R包
在MacOSX系统下加载R包
搜索R包资源库
探索网络上的R包资源库
基于R界面搜寻和安装包
从其他资源库安装R包
定制R包
创建包目录
创建R包
II语言篇
第5章R语言概览
表达式
对象
符号
函数
在赋值语句中,对象会被复制
R中一切皆为对象
特殊值
NA
Inf和-Inf
NaN
NULL
强制转换
R解释器
观察R是如何工作的
第6章R语法
常量
数值向量
字符向量
符号
运算符
运算顺序
赋值操作
表达式
分离型表达式
括号
花括号
控制结构
条件语句
循环
访问数据结构
数据结构操作符
通过整数向量引用
通过逻辑向量引用
通过名字进行引用
R编程标准
第7章R对象
基本对象类型
向量
列表
其他对象
矩阵
数组
因子
数据框
公式
时间序列
Shingle对象
日期和时间对象
连接对象
属性
类
第8章符号和环境
符号
环境
全局环境
环境和函数
调用堆栈
在不同的环境中对函数求值
向环境中添加对象
异常
提示错误
捕获错误
第9章函数
函数的关键字
参数
返回值
函数参数
匿名函数
函数的属性
参数顺序和具名实参
副作用
改变其他环境
输入/输出
图形
第10章面向对象编程
R的面向对象编程概览
核心概念
实现的例子
R的面向对象编程:S4
类的定义
对象的新建
槽的存取
对象的操作
创建强制转换方法
方法
方法的管理
基本类型
更多的帮助
守旧派的OOP:S3
S3的类
S3方法
在S4的类中使用S3的类
查找隐藏的S3方法
III数据篇
第11章数据的存取和编辑
在R中输入数据
用R命令输入数据
用图形界面输入数据
保存和读入R对象
用save保存对象
从外部文件导入数据
文本文件
其他软件
导出数据
从数据库获取数据
导出然后导入
数据库连接包
RODBC
DBI
TSDBI
从Hadoop中获取数据
第12章准备数据
合并数据集
粘贴数据结构
通过共同字段合并数据
数据转换
变量重新赋值
转换函数
对对象的每个元素进行函数运算
数据分段
shingle
Cut
利用分组变量合并对象
子集
中括号索引的方式
subset函数
随机抽样
汇总函数
tapply与aggregate
用rowsum聚合表格
计数
数据修整
数据清洗
查找和删除重复数据
排序
IV可视化篇
第13章图形
RGraphics概述
散点图
时间序列
柱状图
饼图
分类数据绘图
三维数据
绘制分布图
箱线图
画图设备
自定义图形
绘图函数常见参数
图形参数
基本图形函数
第14章Lattice绘图
历史
lattice包概述
lattice的工作原理
例子
使用lattice函数
定制面板函数
高级lattice函数
单一的网格作图
二元网格作图
三元图
其他图形
定制lattice图
lattice函数的常用参数
trellisskeleton
指定如何绘制坐标轴
参数
plottrellis
stripdefault
simpleKey
低级函数
低级绘图函数
面板函数
第15章ggplot2
一个简短的介绍
图形语法
一个更复杂的例子:医保数据
快速绘图
用ggplot2绘图
更多信息
V统计篇
第16章数据分析
描述性统计
相关系数和协方差
主成分分析
因子分析
bootstrap重抽样
第17章概率分布
正态分布
常见分布的参数
分布函数族
第18章统计检验
连续型数据
基于正态分布的检验
不依赖分布的检验
离散数据
比例检验
二项式检验
列联表检验
列联表非参数检验
第19章功效检验
实验设计示例
t检验实验设计
比例实验设计
方差分析设计
第20章回归模型
简单的线性模型示例
拟合模型
指定模型的工具函数
获取模型信息
更新模型
lm函数的详述
最小二乘回归的假设
稳健回归和阻力回归
子集选取和Shrinkage回归
变量的逐步选取
岭回归
Lasso和最小角回归
弹性网络
主成分回归和偏最小二乘回归
非线性模型
广义线性模型
glmnet包
非线性最小二乘
生存模型
平滑
样条线
拟合多项式曲面
核平滑
回归的机器学习算法
回归树模型
MARS算法
神经网络
投影寻踪回归
广义可加模型
支持向量机
第21章分类模型
线性分类模型
logistic回归
线性判别分析
对数线性模型
机器学习分类模型
k近邻
分类树模型
神经网络
支持向量机
随机森林
第22章机器学习
购物篮分析
聚类
距离度量
聚类算法
第23章时间序列分析
自相关函数
时间序列模型
VI其他主题
第24章优化R程序性能
R程序性能的测量
时间测定
性能分析
监控内存的使用
内存性能分析
优化你的R代码
使用向量操作
R中查找的性能
使用数据库查询大数据集
内存预分配
清理内存
大数据集的函数
加速R的其他方法
R字节码编译器
高性能的R版本
第25章Bioconductor
例子
加载原始的表达数据
从GEO读取数据
匹配表型数据
分析表达数据
关键的Bioconductor包
数据结构
eSet
AssayData
AnnotatedDataFrame
MIAME
Bioconductor包使用的其他类
如何进一步学习
Bioconductor之外的资源
教程
课程
相关图书
第26章R和Hadoop
R和Hadoop
Hadoop简介
RHadoop
Hadoopstreaming
了解更多
一些其他的用R做并行计算的包
Segue
doMC
从哪里我们可以了解更多6
参考文献
索引
从我首次接触R算起来,已经有10年的光景。那时我还是DoubleClick公司一名年轻的产品研发经理,我们公司出售用于管理网络广告销售的软件,而我当时主要负责库存预测,根据给定的搜索词、网页或者人口特征来估计广告的点击次数。我想自己独立地分析数据,但是我们买不起SAS或者MATLAB这样昂贵的软件。我尝试着去寻找一个开源的统计软件包,很快R进入了我的视野。相比现在,那时的R还是有些稚嫩,很多的功能(如统计函数、绚丽的绘图)都还不具备。但是,它很直观、易用,我入迷了。从那时起,我一直利用R来处理各种各样的问题:估计信贷风险,分析棒球比赛统计数据,或者寻找互联网安全威胁的来源。从数据中我学习到了很多,并慢慢成长为一名经验丰富的数据分析师。
在过去的10年中,R同样也成熟了许多。如今世界上最大的科技公司(包括谷歌、微软和Facebook),最大的制药公司(包括强生、默克和辉瑞)以及其他数以百计的公司都在使用R。同时,它也被世界各地大学的统计专业的学生,以及乐于尝试新技术和算法的统计研究人员所使用。
为什么写这《R语言核心技术手册(第2版)》
这《R语言核心技术手册(第2版)》可以看作R的一个简明指南,它并不是关于统计的书,也不是关于R的大《R语言核心技术手册(第2版)》。在《R语言核心技术手册(第2版)》中,我尽力列出R可以完成的所有事情,并且用实例来说明其处理过程。这《R语言核心技术手册(第2版)》可以用作一本很好的随身参考书。
写这《R语言核心技术手册(第2版)》是因为我喜欢R。R是有趣而直观的,这是其他解决方案都没有的特点。只需要几行R代码就能够完成Excel几个小时的工作,同样,几行的R代码还能够完成几页Java代码做的事情。市面上有很多优秀的R语言方面的书籍,但是我找不到一本不太贵而且能全面讲述R的书。希望这本可以帮助你来学习和使用R。
什么时候使用R
我认为R是一款强大的软件,但是它不一定是解决所有问题最好的工具。显然,用R来写一个视频游戏是可笑的。甚至对于与数据相关的问题,它也不见得就是最好的工具。
R擅长绘图、分析数据以及利用数据来拟合统计模型。它并不擅长存储复杂的数据结构,也不擅长高效地查询数据,或者处理超过内存能力的数据。通常情况下,在使用R前,我使用Perl、Python或者Ruby等脚本语言来预处理大文件(如果文件很大,我就会使用Pig)。R也可以逐行读取文件以及正则表达式来处理这些问题,但是它的效率略差。对于大数据,我通常使用Hadoop,有时候我也使用一些数据库,如MySQL、PostgreSQL、SQLite或者Oracle(如果有人愿意为我提供正版Oracel的话)。
第2版有什么新内容
这个第2版并不是对第1版的重写。但是我从很多方面改善了这《R语言核心技术手册(第2版)》的内容,包括:
增加了关于ggplot2,以及在Hadoop中使用R的新章节。
对代码的版式及样式做了修改,更便于阅读。
对章节顺序做了微调,把介绍绘图的几个章节放在了一起。
针对R2.14到R2.15的版本变化,做了一些细微的升级。
增加了一些处理数据的新章节,比如plyr和reshape。
修正了一些错误。
R许可条款
R是一个开源软件包,在GNU通用公共许可下授权。注1这意味着,你可以在所有的台式机和服务器上免费安装R软件(同类的商业软件包售价上百或者上千美元)。如果R无法替代商业软件包的功能,它可能没有什么吸引力。不过,我认为R在许多方面都优于那些商业软件。
扩展性
在R中,你可以找到数百(甚至上千)的统计和数据分析的算法实现。没有哪一个商业软件包能像它这样通过CRAN(ComprehensiveRArchiveNetwork)提供这么多功能。
社区
目前世界范围内有数以十万计(也可能是百万计)的R用户。使用R,能保证你和同事使用的是相同的软件。
性能
R的性能可以媲美甚至优于大多数的商业分析软件包。R需要你在预处理时,把数据集加载到内存中。如果你有足够的内存来处理数据,R的执行非常快。幸运的是,内存很便宜。购买一个32GB的服务器内存比买一个桌面版的商业统计软件包要便宜得多。
例子
《R语言核心技术手册(第2版)》提供了许多实用的R代码。我有意新增了一些例子,而并未全部使用R自带的数据集。并不是说R自带的实例不够好,它们都不错,只是我希望能为读者们提供更多的实例。它们都比较短小而且简单,也并未提供全部的源代码下载。但是我把实例所用到的数据和稍长一些的实例代码放在nutshellR包中了,可以通过CRAN得到。要加载nutshell包,可以通过在R控制台输入下面的命令:
>install.packages(”“nutshell”“)
注1关于GPL授权的软件,以及GPL对于公司用户的含义,目前还存在一些争议。有些用户担心他们编写的R代码会受GPL的限制,如果你不打算为R编写扩展包,就不需要担心这一点。R是一种解释器,不能仅仅因为某个程序使用了基于GPL的解释器而这个程序就适用GPL。
如果你打算为R编写扩展包,它们可能会受GPL的限制。更多信息可参阅:http://www.gnu.org/licenses/gplfaq。如果你想得到确切的答案,可咨询律师。
《R语言核心技术手册(第2版)》的结构
我将《R语言核心技术手册(第2版)》分为6个部分:
?I“基础篇”介绍关于安装和运行R的基础知识。如果你是R新用户,它旨在帮助你运行R,以及帮助你了解R的功能。
?II“语言篇”介绍第1部分中没有涵盖的内容,详细介绍R语言。
?III“数据篇”包括使用R进行数据预处理:加载数据、数据变换和汇总数据。
?IV“可视化篇”介绍如何使用R绘图。
?V“统计篇”介绍用R进行统计检验和建模。
?VI“其他主题”包含一些不太常见的主题,如R程序调优,编写并行的R程序,以及Bioconductor基础知识。
如果你是一个R的新用户,可以从第3章开始学习安装R,然后阅读第5章学习一些R语言的规则。如果你使用R来绘图,统计检验或者统计建模,可自行选择合适的章节来阅读。不要跳过每章的头几节,因为通常这些节都提供对所有相关的函数的概述(如,在阅读第471页的“回归的随机森林算法”一节之前,要先阅读第422页的“简单的线性模型示例”一节)。
《R语言核心技术手册(第2版)》的一些约定
《R语言核心技术手册(第2版)》中的字体遵循如下约定:
斜体(Italic)
表示新术语、网址、电子邮件地址、文件名和文件扩展名。
等宽体(Constantwidth)
表示程序清单,以及正文中引用的程序元素,如变量名或函数名、数据库、数据类型、环境变量、语句和关键字。(在R的控制台显示输入和输出时,我用等宽体文本显示提示符以及R解释器生成的其他信息。)
等宽粗体(Constantwidthbold)
表示应该由用户自行输入的命令或其他文本。(在R的控制台显示输入和输出时,我用等宽粗体显示我输入的内容,包括注释。)
等宽斜体(Constantwidthitalic)
表示应该用用户提供的值替换或由上下文确定的值。
代表此处是一个小技巧、建议或者一般性提示。
代表此处是一个警告或注意事项。
在《R语言核心技术手册(第2版)》中,有时显示的是我在自己机器的操作系统中输入的命令(如Linux的bashshell),有时显示的是我在R控制台中输入的命令。对于前者,在书中用$代表命令提示符,而对于后者,用>或+代表提示符。(不管哪种情况,都无须输入这些提示符。)
使用代码示例
《R语言核心技术手册(第2版)》旨在帮助你完成你的工作。总的来说,可以在程序和文档中使用《R语言核心技术手册(第2版)》的代码。如果你使用了《R语言核心技术手册(第2版)》大部分的代码,那么就需要联系我们获得许可。
……









