TURING 图灵程序设计丛书 MANNING R in Action Data Analysis and Graphics with R R语言 实战 [美]Robert I.Kabacof 著 高涛肖楠陈钢 译 学懂分析,玩转大数据 用R轻松实现数据可视化 从实际数据分析出发,全面掌握R编程 人民邮电出版社 POSTS TELECOM PRESS 图灵社区会员matrixvirus(matrixvirus(@l63.com)专享尊重版权
图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
那些年,我们一起学过的R语言 公元前 2007年上半年的一天,一堆做基因组序列分析的代码让我认识了R语言。那是一份高质量的 R代码,各种标准的向量化操作、匿名函数、优美的代码格式让我欣喜,也让我茫然。同年暑假, 有幸到清华大学学习,刘军老师布置下来的作业是用HMM模型预测蛋白质二级结构。我壮着胆 子,硬着头皮,以C语言的风格用R语言完成了作业(各种循环,各种丑陋的标量)。 那些年,R语言所有的参考资料就是官方的几本手册,但庆幸的是,还有丁国徽博士翻译的 中文版。 公元纪年开始 2008年的初冬,北京市海淀区中国人民大学的一间阶梯教室内,举办了一场小众、既不太学 术技术档次也不高的会议。教室外的墙上挂着一条横幅,上书“第一届中国R语言会议”。这算是 R语言在国内发展历程中的一个里程碑。100多人参加了为期一天多的会议。参加那次会议的人不 少都成为了现在中国R语言社区最活跃的人,比如谢益辉、刘思喆、李舰、张翔、魏太云、陈堰 平等人。当然,其中也有当时就已经算是R语言社区元老的吴喜之老师和丁国徽博士。 没记错的话,当时出席会议的还有机械工业出版社的编辑。因为作为会议的承办机构,统计 之都社区(htp:lcos.name)的骨干们已经想通过出版一本高质量R语言书来推动R语言在中国的 发展,而出版界也已经开始注意到这个小众市场。那时候,大部分R语言书籍来自学术界。水平 高深莫测的专家教授们,乃至R语言的发明人Robert C.Gentleman大叔写出来的书,都让我这种 初窥门径的人越看越糊涂。同时,中文的R语言书籍也开始出现,但都只是将R语言作为某个特 定领域(比如生物信息学)的数据分析工具。 文艺复兴 会议举办了,人也都混了个脸熟,但R语言在国内的发展依旧不温不火。直到2011年,大数 据突然火了起来,R语言一举杀进编程语言排行榜前20名。刘思喆同学在“码农”界主流媒体《程 序员》上的文章,让语言一下子走到了很多人面前。大家发现,这个经常被描述成统计编程语 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
IV 那些年,我们一起学过的 R 语言 那些年,我们一起学过的R语言 公元前 2007年上半年的一天,一堆做基因组序列分析的代码让我认识了R语言。那是一份高质量的 R代码,各种标准的向量化操作、匿名函数、优美的代码格式让我欣喜,也让我茫然。同年暑假, 有幸到清华大学学习,刘军老师布置下来的作业是用HMM模型预测蛋白质二级结构。我壮着胆 子,硬着头皮,以C语言的风格用R语言完成了作业(各种循环,各种丑陋的标量)。 那些年,R语言所有的参考资料就是官方的几本手册,但庆幸的是,还有丁国徽博士翻译的 中文版。 公元纪年开始 2008年的初冬,北京市海淀区中国人民大学的一间阶梯教室内,举办了一场小众、既不太学 术技术档次也不高的会议。教室外的墙上挂着一条横幅,上书“第一届中国R语言会议”。这算是 R语言在国内发展历程中的一个里程碑。100多人参加了为期一天多的会议。参加那次会议的人不 少都成为了现在中国R语言社区最活跃的人,比如谢益辉、刘思喆、李舰、张翔、魏太云、陈堰 平等人。当然,其中也有当时就已经算是R语言社区元老的吴喜之老师和丁国徽博士。 没记错的话,当时出席会议的还有机械工业出版社的编辑。因为作为会议的承办机构,统计 之都社区(http://cos.name)的骨干们已经想通过出版一本高质量R语言书来推动R语言在中国的 发展,而出版界也已经开始注意到这个小众市场。那时候,大部分R语言书籍来自学术界。水平 高深莫测的专家教授们,乃至R语言的发明人 Robert C. Gentleman 大叔写出来的书,都让我这种 初窥门径的人越看越糊涂。同时,中文的R语言书籍也开始出现,但都只是将R语言作为某个特 定领域(比如生物信息学)的数据分析工具。 文艺复兴 会议举办了,人也都混了个脸熟,但R语言在国内的发展依旧不温不火。直到2011年,大数 据突然火了起来,R语言一举杀进编程语言排行榜前20名。刘思喆同学在“码农”界主流媒体《程 序员》上的文章,让R语言一下子走到了很多人面前。大家发现,这个经常被描述成统计编程语 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
那些年,我们一起学过的R语言V 言的东西并不是仅仅檀长统计,其底层融合C/C++/Fortran等各种语言的优势、层出不穷的新模型、 日趋成熟的开发设施,再加上它跟Hadoop、多核计算、MPI等高性能计算技术的迅速结合,让人 们看到了它在大数据时代的潜力。 O'Reilly、Manning等技术图书出版商迅速跟进。与以往的学术出版社不同,它们的加入让R 语言书籍更容易被普通读者接受,也迅速降低了R语言的门槛。 你现在翻开的这本书,就是由业内大名鼎鼎的Quick-R网站(http:/www.statmethods.net)的 创始人Robert I..Kabacoff撰写并由Manning出版的。全书分为四部分,由浅入深地介绍了R语言本 身,以及如何用R语言实现或简单或复杂的数据分析和绘图。而书后8个附录中关于大数据分析、 自定义启动环境、图形界面等方面的内容,有一些早已被志愿者翻译成中文在互联网上广泛流传。 本书内容质量之高,权威性之强,由此可见一斑,足以帮读者快速地走过我曾经历过的迷茫。 结束公元纪年 这本书的翻译工作开始的时候我还在学校读书,实验室里有两三个人在使用语言做数据分 析,为发表论文而努力。现在,我坐在公司的工位上,周围的每个人都或多或少在使用R。整个 研发部门一千多人,多半每天都会用到R语言。R语言已经是新员工技术培训的必修内容。 若干天前,同事们在讨论中描绘出一个宏大的愿景:用高效的数据分析手段,建立起海量生 物实验数据到所有生物表型的预测模型。如果成功,这将结束公元纪年。这个愿景的核心不是新 的生物实验技术,也不是如何采集样本,而是数据分析。 有点画大饼的意思了,就此打住。让我们翻开这本书,或许,公元纪年真的能在我们手中结束。 —陈钢 2012年9月4日夜于深圳华大基因研究院 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
那些年,我们一起学过的 R 语言 V 1 2 3 4 5 10 6 7 8 9 言的东西并不是仅仅擅长统计,其底层融合C/C++/Fortran等各种语言的优势、层出不穷的新模型、 日趋成熟的开发设施,再加上它跟Hadoop、多核计算、MPI等高性能计算技术的迅速结合,让人 们看到了它在大数据时代的潜力。 O’Reilly、Manning等技术图书出版商迅速跟进。与以往的学术出版社不同,它们的加入让R 语言书籍更容易被普通读者接受,也迅速降低了R语言的门槛。 你现在翻开的这本书,就是由业内大名鼎鼎的Quick-R网站(http://www.statmethods.net)的 创始人Robert I. Kabacoff撰写并由Manning出版的。全书分为四部分,由浅入深地介绍了R语言本 身,以及如何用R语言实现或简单或复杂的数据分析和绘图。而书后8个附录中关于大数据分析、 自定义启动环境、图形界面等方面的内容,有一些早已被志愿者翻译成中文在互联网上广泛流传。 本书内容质量之高,权威性之强,由此可见一斑,足以帮读者快速地走过我曾经历过的迷茫。 结束公元纪年 这本书的翻译工作开始的时候我还在学校读书,实验室里有两三个人在使用R语言做数据分 析,为发表论文而努力。现在,我坐在公司的工位上,周围的每个人都或多或少在使用R。整个 研发部门一千多人,多半每天都会用到R语言。R语言已经是新员工技术培训的必修内容。 若干天前,同事们在讨论中描绘出一个宏大的愿景:用高效的数据分析手段,建立起海量生 物实验数据到所有生物表型的预测模型。如果成功,这将结束公元纪年。这个愿景的核心不是新 的生物实验技术,也不是如何采集样本,而是数据分析。 有点画大饼的意思了,就此打住。让我们翻开这本书,或许,公元纪年真的能在我们手中结束。 ——陈钢 2012年9月4日夜于深圳华大基因研究院 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
前 言 要是一本书里没有图画和对话,那还有什么意思呢? —爱丽丝,《爱丽丝梦游仙境》 它太神奇了,满载珍宝,可以让那些聪明狡猾和粗野胆大的人得到充分满足;但并不适合胆 小者。 Q,“QWho?”,《星际迷航:下一代》 在开始写这本书时,我花了很多时间搜索适合于开始本书的名言警句。最后,我找到了这两 句话。R是一个非常灵活的平台,是专用于探索、展示和理解数据的语言,因此我引用了《爱丽 丝梦游仙境》的句子来表示当今统计分析的潮流一一个探索、展示和理解的交互式过程。 第二句话反映了大部分人对R的看法:难学。但你完全没必要这样想。虽然R很强大,应用 广泛,不论你是新手还是略有经验的用户,众多的分析和绘图函数(超过50000个)都很容易让 你望而却步,但实际上并非无规律可循。只要有合适的指导,你就可以畅游其中,选择所需的工 具,用最优雅、最简洁、最高效的方式来完成工作一那真的很酷! 多年前,我在申请一个统计咨询职位时,第一次遇到了R。雇主在正式面试前发来的材料中 问我是否熟悉R。根据猎头的建议,我立马回答“是的,我很熟悉”,然后开始恶补R。在统计和 研究方面我有丰富的经验,作为SAS和SPSS程序员也有25年的工作经验,而且对各种编程语言也 颇为精通。学习R能有多难?但事与愿违。 在学习这门语言的过程中(因为要面试,我要尽可能地快),我发现这门语言无论是底层的 结构还是各种高级的统计方法,都是由各具体领域的专家为同行专家编写的。看在线帮助简直就 是折磨,那不是教程,都是参考手册。每当我觉得自己已经对R的结构和功能有足够把握时,就 会发现一些闻所未闻的新东西,它们让我感觉自己很渺小。 为了解决这些问题,我开始以数据科学家的角度学习R。我开始思考如何才能成功地处理、 分析和理解数据,包括: 口获取数据(从各种数据源将数据导入程序): 口整理数据(编码缺失值、修复或删除错误数据、将变量转换成更方便的格式): 口注释数据(以记住每段数据的含义): 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
前 言 VII 1 2 3 4 5 10 6 7 8 9 前 言 要是一本书里没有图画和对话,那还有什么意思呢? ——爱丽丝,《爱丽丝梦游仙境》 它太神奇了,满载珍宝,可以让那些聪明狡猾和粗野胆大的人得到充分满足;但并不适合胆 小者。 ——Q,“Q Who?”,《星际迷航:下一代》 在开始写这本书时,我花了很多时间搜索适合于开始本书的名言警句。最后,我找到了这两 句话。R是一个非常灵活的平台,是专用于探索、展示和理解数据的语言,因此我引用了《爱丽 丝梦游仙境》的句子来表示当今统计分析的潮流——一个探索、展示和理解的交互式过程。 第二句话反映了大部分人对R的看法:难学。但你完全没必要这样想。虽然R很强大,应用 广泛,不论你是新手还是略有经验的用户,众多的分析和绘图函数(超过50 000个)都很容易让 你望而却步,但实际上并非无规律可循。只要有合适的指导,你就可以畅游其中,选择所需的工 具,用最优雅、最简洁、最高效的方式来完成工作——那真的很酷! 多年前,我在申请一个统计咨询职位时,第一次遇到了R。雇主在正式面试前发来的材料中 问我是否熟悉R。根据猎头的建议,我立马回答“是的,我很熟悉”,然后开始恶补R。在统计和 研究方面我有丰富的经验,作为SAS和SPSS程序员也有25年的工作经验,而且对各种编程语言也 颇为精通。学习R能有多难?但事与愿违。 在学习这门语言的过程中(因为要面试,我要尽可能地快),我发现这门语言无论是底层的 结构还是各种高级的统计方法,都是由各具体领域的专家为同行专家编写的。看在线帮助简直就 是折磨,那不是教程,都是参考手册。每当我觉得自己已经对R的结构和功能有足够把握时,就 会发现一些闻所未闻的新东西,它们让我感觉自己很渺小。 为了解决这些问题,我开始以数据科学家的角度学习R。我开始思考如何才能成功地处理、 分析和理解数据,包括: 获取数据(从各种数据源将数据导入程序); 整理数据(编码缺失值、修复或删除错误数据、将变量转换成更方便的格式); 注释数据(以记住每段数据的含义); 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
VIl 前 言 口总结数据(通过描述性统计量了解数据的概况): 口数据可视化(一图胜千言)方 口数据建模(解释数据间的关系,检验假设): 口整理结果(创建具有出版水平的表格和图形)。 然后,我试图用R来完成这些任务。通过教授别人来学习是最好的方式,所以我创建了一个 网站(www.statmethods.net),不断把我学到的东西放在上面。 大概一年后,Marjan Bace(Manning的出版人)打电话给我,问我是不是能写一本关于R的 书。那时我已经写了50篇期刊文章、4份技术手册,以及大量章节的内容,还写了一本关于研究 方法的书,所以,写一本关于R的书能有多难?结果依然是事与愿违。 你现在捧着的这本书是我多年来梦寐以求的。我试图提供一份R的指南,让你能尽快感受到 R的强大以及开源的魅力,不再感到沮丧和忧虑。我希望你能喜欢本书。 另外,虽然当年我成功地申请到了那个职位,但并未入职。不过,学习的经历改变了我的 职业方向,这是我未曾想到的。真可谓人生如戏。 致谢 很多人都对本书精益求精并付出了辛勤的劳动,在此让我对他们一一表示感谢。 口Marjan Bace,Manning出版人,最初劝说我撰写本书的人。 口Sebastian Stirling,进度编辑,花了大量时间与我电话沟通,帮我组织材料、理清概念, 帮我润色文字,在整个出版过程中给了我很多帮助。 口Karen Tegtmeyer,评审编辑,帮助寻找审稿人并协调评审进度。 口Mary Piergies及其团队成员Liz Welch、Susan Harkins和Rachel Schroeder,他们指导了本书 的出版过程。 口Pablo Dominguez Vaselli,技术审读人,帮我理清了很多易混淆的地方,从独立而专业的 角度测试了代码。 口所有花费时间审读本书内容,寻找书写错误和提供了宝贵建议的审稿人:Chris Williams、 Charles Malpas、Angela Staples、Daniel Reis Pereira博士、D.H.van Rijn博士、Christian Marquardt博士、Amos Folarin、Stuart Jefferys、Dror Berel、Patrick Breen、Elizabeth Ostrowski、 Atef Ouni博士、Carles Fenollosa、Ricardo Pietrobon、Samuel McQuillin、Landon Cox、Austin Ziegler、Rick Wagner、Ryan Cox、Sumit Pal、Philipp K.Janert、Deepak Vohra和Sophie Mormede。 口在本书完成前参与MEAP(Manning早期试读计划)的同仁,他们提出了重要的问题、指 出了书中的错误并提供了有益的建议。 他们每个人的贡献都让本书的质量更上一层楼。 我还想感谢为R成为如此强大的数据分析平台而做出卓越贡献的软件开发人员。这其中有R 的核心开发者,还有那些开发R包和维护各种软件包的个人,他们极大地扩展了R的功能。附录F 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
VIII 前 言 总结数据(通过描述性统计量了解数据的概况); 数据可视化(一图胜千言); 数据建模(解释数据间的关系,检验假设); 整理结果(创建具有出版水平的表格和图形)。 然后,我试图用R来完成这些任务。通过教授别人来学习是最好的方式,所以我创建了一个 网站(www.statmethods.net),不断把我学到的东西放在上面。 大概一年后,Marjan Bace(Manning的出版人)打电话给我,问我是不是能写一本关于R的 书。那时我已经写了50篇期刊文章、4份技术手册,以及大量章节的内容,还写了一本关于研究 方法的书,所以,写一本关于R的书能有多难?结果依然是事与愿违。 你现在捧着的这本书是我多年来梦寐以求的。我试图提供一份R的指南,让你能尽快感受到 R的强大以及开源的魅力,不再感到沮丧和忧虑。我希望你能喜欢本书。 另外,虽然当年我成功地申请到了那个职位,但并未入职。不过,学习R的经历改变了我的 职业方向,这是我未曾想到的。真可谓人生如戏。 致谢 很多人都对本书精益求精并付出了辛勤的劳动,在此让我对他们一一表示感谢。 Marjan Bace,Manning出版人,最初劝说我撰写本书的人。 Sebastian Stirling,进度编辑,花了大量时间与我电话沟通,帮我组织材料、理清概念, 帮我润色文字,在整个出版过程中给了我很多帮助。 Karen Tegtmeyer,评审编辑,帮助寻找审稿人并协调评审进度。 Mary Piergies及其团队成员Liz Welch、Susan Harkins和Rachel Schroeder,他们指导了本书 的出版过程。 Pablo Domínguez Vaselli,技术审读人,帮我理清了很多易混淆的地方,从独立而专业的 角度测试了代码。 所有花费时间审读本书内容,寻找书写错误和提供了宝贵建议的审稿人:Chris Williams、 Charles Malpas、Angela Staples、Daniel Reis Pereira博士、D. H. van Rijn博士、Christian Marquardt博士、Amos Folarin、Stuart Jefferys、Dror Berel、Patrick Breen、Elizabeth Ostrowski、 Atef Ouni博士、Carles Fenollosa、Ricardo Pietrobon、Samuel McQuillin、Landon Cox、Austin Ziegler、Rick Wagner、Ryan Cox、Sumit Pal、Philipp K. Janert、Deepak Vohra和Sophie Mormede。 在本书完成前参与MEAP(Manning早期试读计划)的同仁,他们提出了重要的问题、指 出了书中的错误并提供了有益的建议。 他们每个人的贡献都让本书的质量更上一层楼。 我还想感谢为R成为如此强大的数据分析平台而做出卓越贡献的软件开发人员。这其中有R 的核心开发者,还有那些开发R包和维护各种软件包的个人,他们极大地扩展了R的功能。附录F 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权