前言:思 R 不学则殆

    学 R 不思则罔,思 R 不学则殆。

—孔子《论语·为政》3

R的学习困境

《论语》开篇头两个字就是“学R”。可是,R语言(R Core Team 2016)的古怪却是我平生头一回遇见。一些好友对R的火爆津津乐道,而另一些朋友对R却闻所未闻;我努力钻研专家们推荐的教材,却屡战屡“殆”,死活入不了门;出国读书前,身边没有一个人使用R,但到了德国,研究组里每个人都在用R处理科研数据,R代码满天飞,里面隐藏着最新的科研方法,而我抓住一个,打开却像看天书,“罔”了。

多年之后,我费尽周折算是入了R的门。除了科研必需的数据分析、统计计算及作图外,我现在用R来做很多以前意想不到的事情。我发现,R不仅像人们说的那样,是一门顶级的数据分析语言和一个极其人性化的编程环境,R还是一件功能强大的工具和一种充满惊喜的生活方式。每个人都能从中构建自己独特的美丽新世界。通过R语言,我甚至结识了很多志同道合的朋友。

然而,对于我这样的外行来说,R的入门并不容易。

市面上的R语言书籍琳琅满目,大部分是专业人士从内行的角度写成的,讲了太多的“是什么”(what)和“为什么”(why),而我更关心的是“能不能”(if)以及“怎么做”(how)。外行学R,就像小学生学外语,当然应该在游戏和场景中从口语学起,怎么能上来就读语法书呢?我的背景既不是统计学,也不是计算机。纵有那些标着“导论”或“初学者”字样的书籍,对于我这样的零基础菜鸟来说,门槛依然太高。此外,R语言的中文书多数从外文翻译而来,充斥着大量专业词汇,晦涩难懂,让人望而生畏。原因绝非作者水平不高,大概只是由于存在专家盲点,就好像成年人总是忘记孩子的感受,忘记蹲下来从孩子的视角去看桌上的那粒巧克力糖。

当我以菜鸟的视角把学R的历程写在个人博客4之后,才发现原来遭遇R学习困境的不只是我一个人。网友们或留言或来信,表达了类似的心路历程,并且兴奋地告诉我,他们通过我的博客终于进入了R的世界。甚至有些学生问我索取习题答案,原因是他们的老师授课就是以我的博客为教案的。

如果你和当初的我一样是个菜鸟,对R有浓厚的兴趣,只是苦于入不了门,在门口纠结徘徊不忍离去,那么,这本书将帮助你摆脱学R的困境。学生朋友们也不用来信索取答案了,全部在你手上这本书中,而且附上了详细解释。

本书如何使用

本书适合大学本科以上使用。如果你完全不懂R,或者完全不懂统计学,但渴望掌握一个好用的数据分析工具,那么,这本书最适合你;如果你使用过诸如SPSS、SAS等软件,但是其灵活性不能满足需求,那么,使用本书来学习R会很轻松;如果你并无理工科背景,仅仅想为生活增添一些别样的趣味,那么,本书是很个性的选择。

在体例上,本书每个章节配有“卷首语录”、“小贴士”、“练习”、“思考”、“课外活动”。“卷首语录”一般是与该章节有关的言论,旨在增加学习 R 语言的趣味;“小贴士”是对实用小技巧的总结,方便读者快速查阅,可以常备手边;“习题”多是仿照书中的实例来设计的,依葫芦画瓢就可以解答,在书后配有参考答案;“思考”多为启发性的问题,没有固定答案,用来启发读者骑着思想的野马随意驰骋;“课外活动”提供了一些有趣的话题,是该章的实践练习和延伸提高。本书里,R 语言函数名称后面均带有圆括号,与 R 代码和运行结果都以等宽字体格式展示。丰富的格式得益于 R 语言的 bookdown 扩展包。

本书各章节的难度前后相继。对编程或R语言零基础的读者,可以从头读起,大概用累计一天的时间,跟我们一起跨上那个门槛,把那扇门推开一条缝,从门缝里一窥R世界的绚丽。同时,各章相对独立成篇,大可挑感兴趣的章节跳跃阅读。有一定基础的读者,可以将本书常备手头,需要时参照目录选择合适的章节和小贴士查阅。

也许你会问:听说R是专门搞统计学的。我虽然想用R语言做出那些漂亮的图,但是不懂统计学,那可怎么办?

老实说,我也不懂统计学,幸好这并不是学习R的障碍。R最初确实是统计学专用的,但发展至今,早已用于各行各业,遍地开花。翻翻本书的目录,你就会发现,本书大部分章节跟统计学关系不大。我们把统计学的内容集中放在了最后几章,读完之后就会知道如何应用R做一些基础的统计检验了。

本文以博客原稿为框架,在内容上进行了大量的扩充,纠正了一些错误,增添了很多新写的有趣章节,并且为习题提供了参考答案。并且,本书重新整理了所有示例代码,并和勘误表(如果发现印刷错误的话)全部放在本书的主页上5。想省事的话,只需将主页上的代码拷贝粘贴到R的界面运行即可。不过,我仍然建议你亲手敲一遍代码,获得第一手的经验。

R语言的世界地大物博,区区一本小书必然挂一漏万。本书只是牵针引线,重在介绍一门技术的自学方法。“鱼”不如“渔”,请在阅读时注意学习如何自助、如何在互联网寻找和筛选答案。为了便于读者理解,我尽量避免使用专业术语,但这种妥协必然会牺牲表述上的严谨和准确。如果有不得不使用却用错之处,请大家不吝赐教。欢迎R爱好者来信6,共叙R学习和使用过程中的悲喜。

致谢

拜罗伊特大学生态地理模拟研究组的 Björn Reineking 教授开设的Introduction to R 课程,是本书整体风格的滥觞。感谢 Björn 的慷慨,允许我根据需要把讲义跟大家分享。同时,感谢微气象学系 Thomas Foken 教授研究组的同事们,在我学习R的过程中给我很多帮助。在拜罗伊特大学的学习和生活,是我迄今最为怀念的一段时光。

很荣幸邀请到谢益辉博士7为本书作序。益辉是一位对工作精益求精的“强迫症”患者。他对本书原稿的肯定,令我们对本书的出版信心倍增。益辉还对本书的写作时使用的写作工具 bookdown 给予了最大程度的技术支持,并为书稿的格式提出了中肯的修改意见。

外行写 R 属于班门弄斧,刘思喆等来自“统计之都”的专业人士给予了我莫大的宽容和鼓励。同时感谢很多热心网友的反馈,他们用火眼金睛在博客原稿里挑出了一些难以察觉的错误。

衷心感谢我的研究生导师朱彤教授和我的中学语文老师范晓太先生。朱老师于百忙之中抽时间为本书作序,而范老师于遣词造句方面提供的意见让我豁然开朗。两位先生皆是我的人生导师,从他们那里得到的收获让我受益终生。

谨以此书,献给我的家人,希望他们将来能同我一起分享R世界的乐趣。本书书名主要来自我的妻子韩蕾博士的提议。此外,她还以读者身份指出了书稿中的一些疏漏。儒涵和他的朋友小语各自为封面画了插图,尽管最终因风格不符而未被采纳,但我仍然为两个孩子的热心参与感到欣慰。当然也要感谢儒轩,我写书时他经常在身边不声不响地玩耍,时间长了就跑过来盯着我的眼睛说:“别看电脑啦,爱护眼睛。”

赵鹏

初稿:2017年2月14日

终稿:2017年7月20日

于 因斯布鲁克

References

R Core Team. 2016. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.


  1. 据说是林祯舜博士在中国R语言会议的一次发言里将原文的“而”改成了“R”。

  2. 大鹏志:http://dapengde.com/archives/tag/r

  3. 本书主页:http://xuer.pzhao.net

  4. 联系邮箱: xuer@pzhao.net

  5. 虽然益辉不喜欢这个称呼,但我找不到更合适的头衔