作者:Norman 日期:2021-09-26 14:06:36
r是一种用于统计计算与做图的开源软件,同时也是一种编程语言,它广泛应用于企业和学术界的数据分析领域,正在成为*通用的语言之一。由于近几年数据挖掘、大数据等概念的走红,r也越来越多地被人关注。截至本文完成之日,cran(http://cran.r-project.org/)上共有4383个包,涉及统计、化学、经济、生物、医学、心理、社会学等各个学科。不同类型的公司,比如google、辉瑞、默克、美国银行、洲际酒店集团和壳牌公司都在使用它,同时以s语言环境为基础的r语言由于其鲜明的特色,一出现就受到了统计专业人士的青睐,成为国外大学里相当标准的统计软件。
一直以来,国内外关于r语言的著作都是以统计学专业的视角来介绍r语言的,对r语言本身的特性讲解得并不详尽,而软件自带的官方文档又显得过于技术,不那么亲民。另一方面,很多接触r的朋友都来自非计算机专业,没有接受过编程训练,他们使用r的时候,编写出来的代码通常只能算是一条条命令的集合,面对更复杂的问题,常常束手无策。记得在某届r语言大会上,有位sas阵营的朋友说,他看到演讲者所展示的代码里只有函数调用,没有编程的东西,所以他觉得r不能算一种编程语言。其实,他错了,此时你手里这本书,覆盖了其他大部分r语言图书没有涉及的编程主题。这本书就如同r语言的九阳神功秘籍,当神功练成,任督二脉一旦打通,再学习针对某一领域应用的函数或包就如庖丁解牛一般。顺便提一下,据微博上的小道消息,前面提到的那位朋友*近也开始学r了。
本书的特点表现在以下几个方面:
**,对读者的统计学知识和编程水平要求并不高。与很多r语言书籍不同,这本书并不需要很深的统计学功底,它从纯语言的角度入手来讲解r。对于有一定编程经验却没什么统计学背景的人来说,读这本书会比较顺畅,读者就可以重点关注r语言的特性在数据分析方面的应用。在有的地方,作者也会提醒那些有其他语言编程经验的人应该注意r语言有什么不同之处。而对于没有编程经验又想使用r做数据分析的人来说,这本书也是学习编程的绝佳教材。
第二,专注于r语言编程。作者没有把这本书定位为菜谱式的手册,也不像有些r语言图书那样介绍完统计学某方面应用之后简单地把r语言代码摆出来。翻开这本书的目录,你几乎看不到统计学的术语。本书系统介绍了r语言的各种数据结构和编程结构、面向对象编程方法、socket网络编程、并行计算、代码调试、程序性能提升以及r语言与其他语言的接口等主题。书中也提到了不少编程的小技巧,这都是作者多年编程经验的总结。
第三,丰富的案例分析。作者matloff教授是位计算机科学家,同时也是位统计学家,有多年的教学经验,也做过统计学方法论的顾问。除了正文中的例子之外,本书还有44个扩展案例,很多案例源自作者亲身参与过的咨询项目。虽然本书没有讲解任何统计模型,但是扩展案例都是和数据分析相关的,比如对鲍鱼数据的重新编码(第2章)、寻找异常值(第3章)、文本词汇索引(第4章)、学习中文方言的辅助工具(第5章)等。通过学习这些案例,读者不仅能学到r语言的每种概念如何运作,也会学到如何把这些概念组合到一起成为有用的程序。比如第10章介绍了socket网络编程之后,就用一个扩展案例讲解如何用socket实现并行计算,这为第16章详细讲解并行计算做好了铺垫。在很多案例里,作者讨论了好几种设计方案,并比较了这几种方案的不同之处,以回答“为什么这样做”,这对于缺少编程经验的人来说,是非常好的安排。
本书第1章简要介绍了r语言的几种数据结构和编程基础,其余章节可分为三大部分。
**部分(第2~6章)详细介绍r的几种主要的数据结构:向量、矩阵、列表、数据框和因子等。对很多人来说,r复杂多变的数据结构真的是一只拦路虎。而本书从*简单的向量开始,一步一步引导读者认识并掌握各种数据结构。
第二部分(第7~13章)涉及编程方面:编程结构和面向对象特性、输入/输出、字符串处理以及绘图。值得一提的是第13章,这章主要讲解的是r语言的调试。很多朋友在实际工作中有这样的经历,你可能用了一个小时就写好代码,却用了一天的时间来调试。可是到目前为止还没有在其他图书上看到与r语言调试相关的内容,甚至也很少见到关于其他编程语言调试的图书。本书刚好填补了这方面的空白。如果读者仔细读完第13章,并实践其中的调试技巧,一定能事半功倍,也就能少熬点儿夜,有延长寿命的功效。本书的作者同时也著有《调试的艺术》(theart of debugging),相信他在r语言调试方面的功力也是相当深厚的。
第三部分(第14~16章)介绍的是更高级的内容,比如执行速度和性能的提升(第14章)、r语言与c/c++或python混合编程(第15章)以及r语言并行计算(第16章),虽然*后一部分属于编程的高级内容,但如果读者从前往后一直学下来,随着能力的提高,也是可以读懂的。
本人从2007年开始接触r语言,那时候市面上几乎没有r语言方面的书籍。当时我关于r语言的所有信息几乎都是来自统计之都(http://cos.name)和谢益辉的博客(http://yihui.name)。2008年冬天,统计之都成功举办了“**届中国r语言会议”,来自各地的r语言用户们齐聚一堂,交流心得。从那以后,每年的r语言会议都会在北京和上海举办。这几年来,统计之都的队伍也逐渐壮大,比如本书的其他三位主要译者:邱怡轩、潘岚锋和熊熹,当年他们参加r语言会议的时候还是人大统计学院大一、大二的学生,后来也成为r语言社区的领军人物。去年我们接到本书的翻译任务时,他们三人分别收到了美国普度大学、爱荷华州立大学以及明尼苏达大学的录取通知,现在已经在美国留学深造。希望有越来越多的人加入统计之都的大家庭,和大家一起成长,为中国统计事业的发展尽自己的一份力。
在翻译过程中,几位译者力求忠实于原文,但纠正了原书的几处错误,同时也兼顾中文表达的流畅,不过译文中可能仍有不当之处,欢迎读者予以指正。
除了本人以及前面提到的三位译者之外,统计之都的三位老朋友林宇、严紫丹和程豪也参与了本书部分章节的校审和初稿翻译,在此表示感谢。全书译文*后由本人统稿,如有错误之处,均由本人承担。
也感谢机械工业出版社的吴怡编辑,她给予了我们细心的帮助。
统计之都的图书出版栏目(网址是http://cos.name/books/)有本书的页面,读者可以在这里下载本书的数据和代码,也可以留言提问。