序
要想认真理解数据,学习编程至关重要。毋庸置疑,数据科学工作必须在计算机上完成,但你可以有两种选择:学会使用具有图形用户界面(GUI)的统计软件,或者学会一门编程语言。Garrett和我都深信,对于每天跟数据打交道的人来说,编程是一项必需的技能。图形用户界面简单易用,但也有着根本的局限性,主要体现在它束缚了好的数据分析所应具备的以下三个属性。
· 可再现性
可再现性指能够完全再现之前某个分析结果的能力,这是优秀科学的重要特征。
· 自动化
当数据发生改变时(往往经常如此),能够快速更新分析结果的能力。
· 沟通
从形式上看,代码仅仅是一段文本,十分利于沟通。对于一门编程语言的学习者来说,代码的文本特征极大地降低了学习的门槛:只要有不懂的问题,就可以把代码放到邮件列表中提问,或者放到Google的搜索框中搜索,或者上传到Stack Overflow找高手解惑,无论哪种途径都能够得到解答。
不要对“编程”二字望而生畏!只要有合适的动力,每个人都可以学好编程,而本书的目的就是充分调动你学习编程的积极性。这并不是一本编程参考书,它围绕着三个实际的编程挑战展开。如果能够顺利地掌握应对这三个挑战的技术,你将掌握关于R编程的基本知识,甚至还能学习一些中级技能,比如向量化编程、作用域和S3方法等。动手解决实际问题对于学习一门编程语言来说十分重要。学习编程不在于能够死记硬背多少函数,而在于学习函数并将之用于解决实际问题。总而言之,编程需要在实践中学习,而不是靠死记硬背。
学习编程的道路布满荆棘,你会不时地因为棘手的问题而感到沮丧。与学习其他语言一样,熟练掌握程序语言并非一朝一夕之事。在学习编程的过程中感到沮丧是难免的,它听起来十分消极,但实际上对于学习本身来说是有所裨益的。沮丧的感觉是由大脑的懒惰造成的,它在提示你放弃做这么难的事情,去找些容易或有趣的事情来做。有过健身经历的人都知道,如果想更加健美,身体越是抗拒,你就越要鞭策自己去努力锻炼。学习编程也一样,大脑越是感到沮丧,你越应该鞭策自己去战胜沮丧。认识到这一点之后,在学习编程的过程中,如果遇到了令人沮丧的难题,要乐观积极地对待这样的感觉:因为你是在挑战自我。如果每天都能挑战自己一点点,可以预见,不用多久你就会成为一名信心满满的程序员。
本书浅显易懂,娓娓道来,又十分深入与实用。如果你想跟我或者Garrett学习R编程却没有机会与我们当面交流,这本书是不二之选。读这本书于我而言是一种享受,希望你也有同感。
——Hadley Wickham RStudio首席科学家
顺便说一句,Garrett完全没有介绍自己的成果,其实有点过谦了。他写的R包lubridate是处理时间类数据的必备神器,不信大家可以试一试。