那些年,我们一起学过的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语言一下子走到了很多人面前。大家发现,这个经常被描述成统计编程语言的东西并不是仅仅擅长统计,其底层融合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日夜于深圳华大基因研究院

目录

  • 版权声明
  • 那些年,我们一起学过的R语言
  • 译者致谢
  • 前言
  • 关于本书
  • 关于封面图片
  • 第一部分 入门
  • 第1章 R语言介绍
  • 第2章 创建数据集
  • 第3章 图形初阶
  • 第4章 基本数据管理
  • 第5章 高级数据管理
  • 第二部分 基本方法
  • 第6章 基本图形
  • 第7章 基本统计分析
  • 第三部分 中级方法
  • 第8章 回归
  • 第9章 方差分析
  • 第10章 功效分析
  • 第11章 中级绘图
  • 第12章 重抽样与自助法
  • 第四部分 高级方法
  • 第13章 广义线性模型
  • 第14章 主成分和因子分析
  • 第15章 处理缺失数据的高级方法
  • 第16章 高级图形进阶
  • 后记:探索R的世界
  • 附录A 图形用户界面
  • 附录B 自定义启动环境
  • 附录C 从R中导出数据
  • 附录D 制作出版级品质的输出
  • 附录E R中的矩阵运算
  • 附录F 本书中用到的扩展包
  • 附录G 处理大数据
  • 附录H 更新R
  • 参考文献