R语言核心技术手册(第2版)

来自站长百科
跳转至: 导航、​ 搜索
== 图书版权 ==
  • R语言核心技术手册(第2版)(面向统计计算与数据可视化 业界公认R语言最佳入门 覆盖领域最全实战案例最多 数据从业者案头必备工具书)
  • 【美】Joseph Adler(约瑟夫 阿德勒)著
  • 刘思喆 李舰 陈钢 邓一硕 译
  • ISBN 978-7-121-23786-7
  • 2014年7月出版
  • 定价:99.00元
  • 656页
  • 16开

R语言核心技术手册(第2版).jpg

  • == 编辑推荐 ==
  • 如果你打算用R进行统计计算和数据可视化,本书就是关于使用开源R语言(软件环境)快速解决上述问题的实用指导教程。通过本书,你将学会如何编写R函数以及借助R包进行数据预处理、可视化以及数据分析。作者用取自制医学、商业和体育领域的丰富案例对上述问题进行了讲解。
  • √ 多达数百个实例的R教程,快速入门R语言
  • √ 探索R语言的语法、对象和其他语言细节
  • √ 在网站上可找到包括Bioconductor在内的数千个用户共享的R包
  • √ 学习如何用R完成数据分析预处理
  • √ 基于R graphics、lattice和ggplot2包 进行数据可视化
  • √ 使用R语言计算概率分布、统计检验以及拟合模型
  • √ 基于Hadoop并行编程提升大规模运算的效率
  • √ 学习R语言的完整参考手册
  • 第二版的内容依据R 2.14和R 2.15进 行了更新,并新增了R高性能计算、基于ggplot2的数据可视化和利用Hadoop做并行运算等章节。
  • == 内容提要 ==
  • R 是一款优秀的开源统计应用语言,它直观、易用、低成本,而且还有庞大的社区支持,随着数据挖掘技术的兴起,R 语言得到了广泛的应用。《R语言核心技术手册(第2版)》介绍从安装R 软件到基本语法以及应用的全过程,可以帮助你全面地学习和使用R。《R语言核心技术手册(第2版)》共6部分,26 章,基本涵盖了R 语言的所有功能,而且提供了大量的实例说明运用R 语言绘图、分析数据以及拟合统计模型的过程。书中虽然涉及很多统计学理论和知识,但并不是《R语言核心技术手册(第2版)》的重点。
  • 作为第2 版,本书增加了一些处理数据的新章节,将绘图章节集中放在“可视化篇”,同时针对R 的版本变化做了一些升级。
  • 《R语言核心技术手册(第2版)》适合从事数据挖掘、机器学习、统计及数据分析的人士阅读。
  • == 目录 ==
  • 前言 xvi
  • I 基础篇
  • 第1 章获取和安装R 3
  • R 版本3
  • R 的安装3
  • Windows 4
  • Mac OS X 5
  • Linux 和UNIX 系统5
  • 第2 章R 的用户界面 7
  • R 的图形用户界面7
  • Windows 8
  • Mac OS X 8
  • Linux 和UNIX 程序9
  • R 控制台11
  • 命令行编辑13
  • 批处理模式14
  • 在Excel 中使用R 15
  • RStudio 17
  • 其他运行R 的方式17
  • 第3 章简短的示例 19
  • 基本操作19
  • 函数21
  • 变量22
  • 数据结构简介25
  • 对象和类28
  • 模型和公式30
  • 图表32
  • 获得帮助37
  • 第4 章R 包 39
  • R 包概览39
  • 列示本地库中的R 包40
  • 加载R 包42
  • 在Windows 和Linux 系统下加载R 包42
  • 在Mac OS X 系统下加载R 包42
  • 搜索R 包资源库43
  • 搜索网络上的R 包资源库44
  • 基于R 界面搜寻和安装包44
  • 从其他资源库安装R 包47
  • 定制R 包47
  • 创建包目录48
  • 创建R 包49
  • II 语言篇
  • 第5 章R 语言概览 53
  • 表达式53
  • 对象54
  • 符号54
  • 函数55
  • 在赋值语句中,对象会被复制56
  • R 中一切皆为对象57
  • 特殊值58
  • NA 58
  • Inf 和-Inf 58
  • NaN 59
  • NULL 59
  • 强制转换59
  • R 解释器60
  • 观察R 是如何工作的62
  • 第6 章R 语法65
  • 常量65
  • 数值向量65
  • 字符向量67
  • 符号67
  • 运算符69
  • 运算顺序70
  • 赋值操作71
  • 表达式72
  • 分离型表达式72
  • 括号72
  • 花括号73
  • 控制结构74
  • 条件语句74
  • 循环75
  • 访问数据结构79
  • 数据结构操作符79
  • 通过整数向量引用79
  • 通过逻辑向量引用82
  • 通过名字进行引用83
  • R 编程标准84
  • 第7 章R 对象 86
  • 基本对象类型86
  • 向量89
  • 列表91
  • 其他对象91
  • 矩阵92
  • 数组92
  • 因子93
  • 数据框95
  • 公式96
  • 时间序列98
  • Shingle 对象99
  • 日期和时间对象100
  • 连接对象100
  • 属性101
  • 类104
  • 第8 章符号和环境 106
  • 符号106
  • 环境107
  • 全局环境108
  • 环境和函数109
  • 调用堆栈109
  • 在不同的环境中对函数求值110
  • 向环境中添加对象113
  • 异常113
  • 提示错误114
  • 捕获错误115
  • 第9 章函数 117
  • 函数的关键字117
  • 参数117
  • 返回值119
  • 函数参数119
  • 匿名函数120
  • 函数的属性122
  • 参数顺序和具名实参124
  • 副作用125
  • 改变其他环境125
  • 输入/输出126
  • 图形126
  • 第10 章面向对象编程 127
  • R 的面向对象编程概览128
  • 核心概念128
  • 实现的例子129
  • R 的面向对象编程:S4 135
  • 类的定义135
  • 对象的新建137
  • 槽的存取138
  • 对象的操作138
  • 创建强制转换方法138
  • 方法139
  • 方法的管理140
  • 基本类型141
  • 更多的帮助142
  • 守旧派的OOP:S3 142
  • S3 的类143
  • S3 方法144
  • 在S4 的类中使用S3 的类145
  • 查找隐藏的S3 方法145
  • III 数据篇
  • 第11 章数据的存取和编辑 149
  • 在R 中输入数据149
  • 用R 命令输入数据149
  • 用图形界面输入数据150
  • 保存和读入R 对象153
  • 用save 保存对象153
  • 从外部文件导入数据154
  • 文本文件155
  • 其他软件163
  • 导出数据164
  • 从数据库获取数据164
  • 导出然后导入165
  • 数据库连接包165
  • RODBC 166
  • DBI 177
  • TSDBI 181
  • 从Hadoop 中获取数据182
  • 第12 章准备数据 183
  • 合并数据集183
  • 粘贴数据结构184
  • 通过共同字段合并数据188
  • 数据转换189
  • 变量重新赋值190
  • 转换函数190
  • 对对象的每个元素进行函数运算191
  • 数据分段197
  • shingle 197
  • Cut 197
  • 利用分组变量合并对象198
  • 子集199
  • 中括号索引的方式199
  • subset 函数200
  • 随机抽样200
  • 汇总函数202
  • tapply 与aggregate 202
  • 用rowsum 聚合表格205
  • 计数206
  • 数据修整209
  • 数据清洗218
  • 查找和删除重复数据219
  • 排序219
  • IV 可视化篇
  • 第13 章图形 225
  • R Graphics 概述225
  • 散点图226
  • 时间序列231
  • 柱状图233
  • 饼图238
  • 分类数据绘图239
  • 三维数据245
  • 绘制分布图252
  • 箱线图256
  • 画图设备259
  • 自定义图形260
  • 绘图函数常见参数260
  • 图形参数260
  • 基本图形函数271
  • 第14 章Lattice 绘图280
  • 历史280
  • lattice 包概述281
  • lattice 的工作原理281
  • 例子281
  • 使用lattice 函数284
  • 定制面板函数285
  • 高级lattice 函数286
  • 单一的网格作图287
  • 二元网格作图312
  • 三元图321
  • 其他图形326
  • 定制lattice 图328
  • lattice 函数的常用参数328
  • trellis.skeleton 329
  • 指定如何绘制坐标轴330
  • 参数331
  • plot.trellis 336
  • strip.default 337
  • simpleKey 338
  • 低级函数339
  • 低级绘图函数339
  • 面板函数340
  • 第15 章ggplot2 341
  • 一个简短的介绍341
  • 图形语法345
  • 一个更复杂的例子:医保数据350
  • 快速绘图360
  • 用ggplot2 绘图361
  • 更多信息365
  • V 统计篇
  • 第16 章数据分析369
  • 描述性统计369
  • 相关系数和协方差372
  • 主成分分析375
  • 因子分析379
  • bootstrap 重抽样380
  • 第17 章概率分布382
  • 正态分布382
  • 常见分布的参数384
  • 分布函数族385
  • 第18 章统计检验389
  • 连续型数据390
  • 基于正态分布的检验390
  • 不依赖分布的检验405
  • 离散数据408
  • 比例检验408
  • 二项式检验409
  • 列联表检验410
  • 列联表非参数检验416
  • 第19 章功效检验417
  • 实验设计示例417
  • t 检验实验设计418
  • 比例实验设计419
  • 方差分析设计420
  • 第20 章回归模型422
  • 简单的线性模型示例422
  • 拟合模型424
  • 指定模型的工具函数425
  • 获取模型信息425
  • 更新模型431
  • lm 函数的详述432
  • 最小二乘回归的假设434
  • 稳健回归和阻力回归436
  • 子集选取和Shrinkage 回归438
  • 变量的逐步选取438
  • 岭回归439
  • Lasso 和最小角回归440
  • 弹性网络442
  • 主成分回归和偏最小二乘回归442
  • 非线性模型443
  • 广义线性模型443
  • glmnet 包446
  • 非线性最小二乘449
  • 生存模型450
  • 平滑456
  • 样条线456
  • 拟合多项式曲面458
  • 核平滑459
  • 回归的机器学习算法460
  • 回归树模型462
  • MARS 算法473
  • 神经网络479
  • 投影寻踪回归483
  • 广义可加模型486
  • 支持向量机488
  • 第21 章分类模型 490
  • 线性分类模型490
  • logistic 回归490
  • 线性判别分析495
  • 对数线性模型499
  • 机器学习分类模型500
  • k 近邻500
  • 分类树模型502
  • 神经网络506
  • 支持向量机507
  • 随机森林507
  • 第22 章机器学习509
  • 购物篮分析509
  • 聚类514
  • 距离度量514
  • 聚类算法515
  • 第23 章时间序列分析519
  • 自相关函数519
  • 时间序列模型520
  • VI 其他主题
  • 第24 章优化R 程序性能527
  • R 程序性能的测量527
  • 时间测定527
  • 性能分析528
  • 监控内存的使用530
  • 内存性能分析531
  • 优化你的R 代码531
  • 使用向量操作531
  • R 中查找的性能534
  • 使用数据库查询大数据集541
  • 内存预分配541
  • 清理内存541
  • 大数据集的函数543
  • 加速R 的其他方法543
  • R 字节码编译器543
  • 高性能的R 版本546
  • 第25 章Bioconductor 551
  • 例子552
  • 加载原始的表达数据552
  • 从GEO 读取数据557
  • 匹配表型数据559
  • 分析表达数据560
  • 关键的Bioconductor 包564
  • 数据结构568
  • eSet 568
  • AssayData 570
  • AnnotatedDataFrame 571
  • MIAME 571
  • Bioconductor 包使用的其他类572
  • 如何进一步学习573
  • Bioconductor 之外的资源574
  • 教程574
  • 课程574
  • 相关图书575
  • 第26 章R 和Hadoop 576
  • R 和Hadoop 576
  • Hadoop 简介577
  • RHadoop 582
  • Hadoop streaming 597
  • 了解更多600
  • 一些其他的用R 做并行计算的包601
  • Segue 601
  • doMC 602
  • 从哪里我们可以了解更多602
  • 参考文献603
  • 索引606
  • == 作者简介 ==
  • 作者:约瑟夫•阿德勒(Joseph Adler)拥有多年数据挖掘和数据分析经验,曾就职于DoubleClick、美国运通和VeriSign公司。约瑟夫毕业于麻省理工学院,期间取得了计算机科学和电子工程的学士及硕士学位。他拥有多项计算机安全和密码学领域的专利,并且是《棒球技巧》(Baseball Hacks)的作者。目前,他在LinkedIn公司任高级数据科学家。
  • 译者:刘思喆 中国人民大学统计学院科班出身,国内资深R领域专家,拥有10 年R 语言使用经验,中国R 语言会议联合发起人。《153 分钟学会R》作者,《R reference card》译者。“统计之都” 理事会成员,R 语言版版主;电信、互联网、彩票行业资深数据挖掘专家。CSDN 大数据技术论坛、DATA World Forum、中国人民大学数据挖掘中心特邀讲师。
  • 媒体评论
  • R是一种免费且功能强大的语言,但不易入门。本书是学习R语言的不二之选,是每个数据科学家必备的案头参考书。
  • —— DJ Patil
  • Greylock公司房产领域数据科学家
  • R迅速蹿红为数据分析的通用语言,本书堪称是学习R语言的最佳入门书籍。它涵盖了包括数据可视化、时间序列分析等在内的数据科学能包罗的所有领域。
  • —— Anthony Goldbloom
  • Kaggle公司创始人兼CEO
  • == 前言 ==
  • 从我首次接触R 算起来,已经有10 年的光景。那时我还是DoubleClick 公司一名年轻的产品研发经理,我们公司出售用于管理网络广告销售的软件,而我当时主要负责库存预测,根据给定的搜索词、网页或者人口特征来估计广告的点击次数。我想自己独立地分析数据,但是我们买不起SAS 或者MATLAB 这样昂贵的软件。我尝试着去寻找一个开源的统计软件包,很快R 进入了我的视野。相比现在,那时的R 还是有些稚嫩,很多的功能(如统计函数、绚丽的绘图)都还不具备。但是,它很直观、易用,我入迷了。从那时起,我一直利用R 来处理各种各样的问题:估计信贷风险,分析棒球比赛统计数据,或者寻找互联网安全威胁的来源。从数据中我学习到了很多,并慢慢成长为一名经验丰富的数据分析师。
  • 在过去的10 年中,R 同样也成熟了许多。如今世界上最大的科技公司(包括谷歌、微软和Facebook),最大的制药公司(包括强生、默克和辉瑞)以及其他数以百计的公司都在使用R。同时,它也被世界各地大学的统计专业的学生,以及乐于尝试新技术和算法的统计研究人员所使用。
  • 为什么写这本书
  • 这本书可以看作R 的一个简明指南,它并不是关于统计的书,也不是关于R 的大全书。在本书中,我尽力列出R 可以完成的所有事情,并且用实例来说明其处理过程。这本书可以用作一本很好的随身参考书。
  • 写这本书是因为我喜欢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 版的重写。但是我从很多方面改善了这本书的内容,包括:
  • • 增加了关于ggplot2,以及在Hadoop 中使用R 的新章节。
  • • 对代码的版式及样式做了修改,更便于阅读。
  • • 对章节顺序做了微调,把介绍绘图的几个章节放在了一起。
  • • 针对R 2.14 到R 2.15 的版本变化,做了一些细微的升级。
  • • 增加了一些处理数据的新章节,比如plyr 和reshape。
  • • 修正了一些错误。
  • R 许可条款
  • R 是一个开源软件包,在GNU 通用公共许可下授权。注1这意味着,你可以在所有的台式机和服务器上免费安装R 软件(同类的商业软件包售价上百或者上千美元)。如果R 无法替代商业软件包的功能,它可能没有什么吸引力。不过,我认为R 在许多方面都优于那些商业软件。
  • 扩展性
  • 在R 中,你可以找到数百(甚至上千)的统计和数据分析的算法实现。没有哪一个商业软件包能像它这样通过CRAN(Comprehensive R Archive Network)提供这么多功能。
  • 社区
  • 目前世界范围内有数以十万计(也可能是百万计)的R 用户。使用R,能保证你和同事使用的是相同的软件。
  • 性能
  • R 的性能可以媲美甚至优于大多数的商业分析软件包。R 需要你在预处理时,把数据集加载到内存中。如果你有足够的内存来处理数据,R的执行非常快。幸运的是,内存很便宜。购买一个32 GB的服务器内存比买一个桌面版的商业统计软件包要便宜得多。
  • 例子
  • 本书提供了许多实用的R 代码。我有意新增了一些例子,而并未全部使用R 自带的数据集。并不是说R 自带的实例不够好,它们都不错,只是我希望能为读者们提供更多的实例。它们都比较短小而且简单,也并未提供全部的源代码下载。但是我把实例所用到的数据和稍长一些的实例代码放在nutshell R 包中了,可以通过CRAN 得到。要加载nutshell 包,可以通过在R 控制台输入下面的命令:
  • > install.packages("nutshell")
  • 注1 关于GPL 授权的软件,以及GPL 对于公司用户的含义,目前还存在一些争议。有些用户担心他们编写的R 代码会受GPL 的限制,如果你不打算为R 编写扩展包,就不需要担心这一点。R 是一种解释器,不能仅仅因为某个程序使用了基于GPL 的解释器而这个程序就适用GPL。
  • 如果你打算为R 编写扩展包,它们可能会受GPL 的限制。更多信息可参阅: http://www.gnu.org/licenses/gplfaq。如果你想得到确切的答案,可咨询律师。
  • 本书的结构
  • 我将本书分为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页的“简单的线性模型示例”一节)。
  • 本书的一些约定
  • 本书中的字体遵循如下约定:
  • 斜体(Italic)
  • 表示新术语、网址、电子邮件地址、文件名和文件扩展名。
  • 等宽体(Constant width)
  • 表示程序清单,以及正文中引用的程序元素,如变量名或函数名、数据库、数据类型、环境变量、语句和关键字。(在R 的控制台显示输入和输出时,我用等宽体文本显示提示符以及R 解释器生成的其他信息。)
  • 等宽粗体(Constant width bold)
  • 表示应该由用户自行输入的命令或其他文本。(在R 的控制台显示输入和输出时,我用等宽粗体显示我输入的内容,包括注释。)
  • 等宽斜体(Constant width italic)
  • 表示应该用用户提供的值替换或由上下文确定的值。
  • 代表此处是一个小技巧、建议或者一般性提示。
  • 代表此处是一个警告或注意事项。
  • 在本书中,有时显示的是我在自己机器的操作系统中输入的命令(如Linux的bash shell),有时显示的是我在R 控制台中输入的命令。对于前者,在书中用$ 代表命令提示符,而对于后者,用> 或+ 代表提示符。(不管哪种情况,都无须输入这些提示符。)
  • 使用代码示例
  • 本书旨在帮助你完成你的工作。总的来说,可以在程序和文档中使用本书的代码。如果你使用了本书大部分的代码,那么就需要联系我们获得许可。
  • 比如在一个程序中使用了本书的几段代码不需要许可,而以光盘的形式销售或者出版O’Reilly 书中的例子则需要得到许可。引用本书回答问题以及引用例子代码不需要我们的许可,而将本书的绝大部分代码使用在你的产品文档中则需要得到许可。
  • 我们会非常感谢你在引用本书时声明版权,虽然这不是必需的。声明版权时通常包括书名、作者、出版社和ISBN。例如,“R in a Nutshell by Joseph Adler. Copyright 2012 Joseph Adler, 978-1-449-31208-4.”如果你认为你对代码示例的使用超过了合理使用或上述许可使用的范围,可以通过permissions@oreilly.com联系我们。
  • Safari® 联机丛书
  • Safari 联机丛书(www.safaribooksonline.com)是一个按需服务的数字图书馆,提供由全球技术和商业领域顶级作者创作的专业图书或者视频。
  • 在这个数字图书馆中,技术人员、软件开发者、网站设计师、商业和创意人员都可以找到他们研究、解决问题、学习以及认证培训所需的很多资源。
  • Safari 联机丛书为企业组织、政府机构以及个人提供各种形式和价位的产品组合。订阅者可以阅读上千本图书和培训视频,并且还能通过数据库查询提前读到作者的手稿。此数据库收录的出版商有O’Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology 等,更多信息请访问Safari 网站。
  • 联系我们
  • 关于本书的建议和疑问,可以与下面的出版社联系。
  • 美国:
  • O’Reilly Media, Inc.
  • 1005 Gravenstein Highway North
  • Sebastopol, CA 95472
  • 中国:
  • 北京市西城区西直门南大街2 号成铭大厦C 座807 室(100035)奥莱利技术咨询(北京)有限公司
  • 我们将关于本书的勘误表、例子以及其他信息列在本书的网页上,网页地址是:http://www.oreilly.com/catalog/9781449212084
  • 如果要评论本书或者咨询关于本书的技术问题,请发邮件到:bookquestions@oreilly.com
  • 想了解关于O’Reilly 图书、课程、会议和新闻的更多信息,请访问以下网站:
  • http://www.oreilly.com.cn
  • http://www.oreilly.com
  • 致谢
  • 首先,我要感谢所有读过本书第1 版的读者,说明这本书还很有用。我尝试着写一本自己想读的书,希望分享所有我知道的关于R 的信息。这是一个雄心勃勃的目标,而我写的书却并不完美。感谢所有的回馈、建议和修改意见,我尽己所能提高第2 版的质量。
  • 还要感谢O’Reilly 的出版团队。Tim O’Reilly 曾说过他遵循三条准则:专注于比赚钱更有意义的事情;创造比获得还多的价值;做长期打算。注2在写这本书的时候我尽量遵循这三条准则。作为一个作者,我能感觉到O’Reilly的团队在遵循这样的准则。我写这本书的目标是尽我最大的能力写好这本书。我希望当人们在读这本书的时候,可以学到一些新的东西,而且能用它们来解决一些重要的问题。
  • 本书的出版得到了许多人的帮助。首先,我想感谢我的所有技术评审。这些人检查实例代码,确保它们能顺畅运行,查找技术和数学上的错误,并为我的写作提出许多建议。没有高素质的技术评审,是不可能完成一本高质量的技术图书的。Peter Goldstein、Aaron Mandel 和David Hoaglin,他们是这本书得以高质量完成的原因。
  • 在过去的两年间,我在LinkedIn 工作,见证了平地而起的数据革命。在与DJ Patil、Monica Rogati、Daniel Tunkelang、Sam Shah 和Jay Kreps 等诸位同事共事的过程中我学到了很多。我无意间发现了一些有趣的模式,想把它们分享给其他人,想知道我的程序怎样影响上亿用户。我希望第2 版呈现了我在数据中获得的经验,并把这些经验传递给其他人。
  • 我要感谢XKCD 漫画的作者Randall Munroe。在这本书中,他友善地允许我们使用他的两幅漫画作品。你可以通过http://www.xkcd.com 来欣赏他的漫画。
  • 此外,我要感谢每一位为我的书提出建设性建议的人。来自Football Outsiders(http://www.footballoutsiders.com)的Aaron Schatz 提供了NFL 2005 赛季的对战数据。强生公司的Sandor Szalma 建议我把GSE 2034 基因表达数据作为示例数据。Kaggle 的Jeremy Howard 建议增加glmnet。
  • 最后,我想感谢我的妻子Sarah、女儿Zoe、儿子Zeke。写一本书需要大量的时间,他们在我工作的时候能理解我。当我拖着他们到圣地亚哥动物园看哈比鹰时,他们同样也能支持和理解我。
  • 布的,因此,其中大多数包在CRAN 上都无法找到。通过Bioconductor 项目我们大概可以直接获取数十个不同的R 包。
  • R-Forge是另外一个寻找R 包的有趣去处。R-Forge 网站包含很多正处在开发过程中的R 包项目,它为开发者提供了一系列协作开发R 项目的工具。你可以在这里找到一些有意思的R 包,不过,因为其中的很多包都处在开发状态,功能尚未成熟,因此在使用这些R 包之前请务必阅读其免责声明和文档。
  • R 具备从其他资源库下载和安装包的功能。不过,我并不知道其他关于R包的公共资源库。大多数R 项目都用CRAN 来发布其R 包。(我甚至见到过一些图书用CRAN 发布示例代码和示例数据。)
  • 搜索网络上的R 包资源库
  • 在GUI 中,R 提供了安装包的便捷工具,但却没有提供一个较好的搜索特定R 包的方式。幸运的是,在网络上搜索R 包很方便。
  • 通过浏览器可以浏览一系列可用的R 包。下面列出了一些可以搜索到R 包的好地方。
  • 资源库URL
  • CRAN 在http://cran.r-project.org/web/packages/上可以找到权威列表,不过建议你找到当地的镜像网站,从镜像网站上下载
  • Bioconductor http://www.bioconductor.org/packages/release/Software.html
  • R-Forge http://r-forge.r-project.org/
  • 当然,你也可以用搜索引擎来搜索R 包。我用Google 搜索“R package”加上应用的名字,每次都能很走运地搜到想要的结果。譬如,搜索“R package multivariate additive regression splines”,可以找到mda 包,该包提供了mars函数。(当然,之后我又发现earth 包是针对这一算法的更好选择,后面会具体介绍。)
  • 基于R 界面搜寻和安装包
  • 确定了想要安装的R 包后,最简单的方法是基于R 来安装。