Hands-On Programming with R - R语言入门与实践

图书信息

  • 英文书名:Hands-On Programming with R

  • 中文书名:R 语言入门与实践

  • 作者:[美] Garrett Grolemund

  • 译者:冯凌秉

  • 页数:正文 180 页 / 附录 32 页

  • 英文出版社:O'Reilly Media

  • 中文出版社:人民邮电出版社 / 图灵教育

  • 出版日期:英文原版 2014 / 简体中文版 2016

  • 个人分类:数据科学 / R

  • ISBN:978-7-115-42471-6

书评

写于2022年2月18日。

花了一天时间读了一下一本简单的R入门读物,不到两百页。因为有过其它语言基础,所以读得很快。

说实话,今天早上从书架里拿起这本书的时候我也搞不清楚我有什么读R语言书的必要,现在我读完了还是没搞懂,就当图一乐吧。

平时R用得不多,主要也就是拿ggplot2画两张好看的图这样,即使是数模比赛这次我也主要拿Python做的,没怎么用R,所以对R的了解其实非常少。读了这本书大致对R有了一个了解之后,我意识到R其实是一门非常有意思的语言。

R本质上是有着函数式内核的,与JavaScript有一些奇妙的相似性,例如R也支持闭包,甚至支持“定义后立即调用”。R也有面向对象(S3,S4),但它的面向对象更近似于JavaScript的“原型继承”,不过更加原始,而不是Java式的“类继承”。R是非常自由的,一切都是对象,因此一切也都可以有属性,这和JavaScript非常相似。

与Python类似,R不需要变量声明即可直接定义变量,这种方式定义出来的变量更近似于全局变量,因此需要闭包来减少全局污染,这和JavaScript(ES6之前)很像,而Python尽管也有这个问题,但通过各种巧妙的方式避开了问题的核心,这里就不多谈了。

R令人印象深刻的一点在于其向量化编程的思想,考虑到R的历史悠久性,或许NumPy的数组广播很大一部分灵感来源于R的向量化编程。

作为一门编程语言,R显然是不太合格的,原始的面向对象,从1开始的下标,过度自由的语法,对模块化较差的支持,没有位运算符,都注定了R不可能成为一门真正广泛应用的语言。但也正是这些特点,使得R至今仍尤其适合数据科学与统计领域的任务,并且随着Tidyverse的蓬勃发展已经有了重新追上Python的趋势。作为一门已经流行了数十年的统计语言,在今天仍保持着如此重要的地位,R的生命力着实令人感叹。

回到书本身,本书从三个实例从零开始介绍了R的基础语法,没有任何编程基础也能轻松理解,但对我来说确实太基础了点,所以很多地方我是跳着看的。语言生动有趣,全书没有任何理解难度,在合适的地方有习题,习题后面立即就有解答,我想任何人都能够在一周内看完这本书,并且快速上手R语言。

这本书和《R for Data Science》(中文名“R数据科学”)是相衔接的,读完本书可以立即去读《R for Data Science》,然后就已经基本掌握了使用R进行数据科学工作的能力了。至于另一本很流行的比较厚的R入门书《R语言实战》,有些更偏向于base R而不是Tidyverse流,在Tidyverse(及受到它启发诞生的诸多R包,例如data.table)几乎已经统一了R的今天,再去学习base R其实已经不是太有必要了,或许以本书和《R数据科学》两本书直接入门Tidyverse流下的R语言是一种更好的选择。

总之,如果是数据科学领域的相关从业者(或者是做生信的),从这本书开始入门R应当是一个很不错的选择。至于其他领域的从业者,应当就没有什么阅读的必要了(我读这个纯粹是闲的,按理来说我也没啥读的必要,纯当丰富语言阅历了)。

最后更新于