R进阶读物
书如其名,Hadley 的这本 Advanced R 确是学习 R 语言进阶的好材料。 而且作者在其网站上直接放出了书的全部内容,我就是直接看的电子版。
很多其他讲 R 的书有两种倾向,一是偏传统入门,二是偏统计应用。 前者按部就班从变量、函数、循环等开始讲。 读者常常一边觉得这门语言有点奇怪,一边又发现光这样很难入门,后续学习曲线太陡。 而且 R 这几年发展太快,不少 old fashion 的写法其实已经应该被抛弃了。 所以,可能这也是目前很多低效 R 代码被写出来的原因之一吧。 另一种书则更多是站在统计背景下,用 R 来讲数据挖掘、机器学习等。 这当然没什么问题,只是同样没有解决语言本身的一些疑问,所以读者看完并没有了解 R 的特性, 很可能写算法时又转去用其他语言了。
这本书不讲统计,不讲数据挖掘,不讲机器学习,不讲可视化,就是关注 R 语言本身。
具体说,第一部分 Foundations 里把一些基本的要素都包含了。 毕竟不是入门读物,没有罗列太多基本函数以及已经有些过时的传统用法。 其中,特别是 OO 讲 S3/S4/RC 的部分以及 Environment 这两章,条分缕析又不罗嗦,讲得很清楚。
第二部分 Functional programming 介绍了一些常用的做法和技巧,但感觉还是有些不过瘾。
第三部分 Metaprogramming 特别有意思,好多黑魔法! 跟之前 FP 的技巧结合后,可以实现一些简洁而强大的功能。 同时,原来有些很难解决的问题,现在也可以优雅地实现了。
最后一部分讲 R 的效率,包含了一些实用的方法论,内存管理,Rcpp 等。 同样讲得非常清楚,包括一些效率问题背后的原因,相关的 trade-off 等。 Rcpp 本身之前有了解,这部分也有专门的书和线上资料可以参考。 最后讲 C interface 的一章我跳过了,真需要的时候再看吧。
现在回想刚毕业那会写 R 时搞的一些 ugly hack,觉得都有点好笑。 书到用时方恨少,光靠自己摸索还是不行。
总之,对一个有一定编程基础的人,这本书非常适合用来了解 R 语言本身的特性。 作者作为 R 社区的大神级人物,把自己的很多思考和最佳实践放进了书里,也值得参考。