了解有余深入不足
2012-04-06
写于 http://datawarehou.se/comments/the-art-of-r-programming/
基本看完了这本《R语言艺术》。该书并没有中文版,我在Amazon买的Kindle版来看。最初是在flowing data上面看的书评,留下了印象,而本身自己也挺想了解下R,索性就通过这本书来入门,应该说目的还是达到了。后面几章关于性能、并行的内容看的非常粗略,打算在真正用到的时候再回过头来看。
这本书对于有一定编码经验却没什么统计学背景的人(比如我)来说,至少是一个好的开始。它大概和其他很多R语言书籍不同,并不需要很深的统计学功底,而是从纯语言的角度入手来讲解R——这是它最大的优点。缺点也相当明显,其实对于一个有编码经验的人来说,学习、上手一门新的语言,从语法的结构来说是非常容易的,这本书办到了,而更关键的关于“什么时候用什么”以及“为什么那么用”的问题并没有很好的解答。感觉定位有些尴尬,对于有经验的人来说有些地方讲的太冗余,而对于0经验的人来说有些地方又不是一下子能懂。
这本书另一个缺点在于,它没有提供一套可供练习的数据样本。书中屡次涉及到的一些文件,并没有提供给读者(我曾尝试email给作者索取数据文件,但也没有得到回复),而Kindle版(尤其是我在Mac上用Kindle来阅读)对于代码的排版也相当混乱——这不是书本身内容的问题,但确实让我不怎么想读那些代码了。
对于R语言本身,读书中产生的一些认识已经在之前的笔记中列出。以前只觉得它有很多统计学的库,现在来看它的数据结构也是亮点。关于为什么不“完全用R”,这两篇文章(让Python与R共舞,在Python里使用R)都有所描述。书中提及两个导致R运行缓慢的原因:1. 作为解释型语言,R的许多函数是用C写的,因此运行较快,但另一方面,纯用R写的应用则没那么快 2. 一个会话中所有的R对象都保存在内存——更精确地说是R的存储空间(即使在64位机和大内存的环境中,R也只占据有限的231-1 bytes空间),而许多应用可能用到很多、很大的对象。我想我也会尝试用Python与R结合来处理问题(装了rpy2,似乎还是很直观的一个库)。
通过读这本书,也让我意识到自己在统计方面的欠缺,甚至一些基础都已经不那么清晰了。下一步自然是用一些例子以及专门的统计书籍来唤醒、强化这方面的知识,至少让我自己能解释那些R中的基本包、函数,以及它们的应用场景。
在豆瓣上为这本书打了3星,扣分主要源于其讲解有余、实践不足,没提供练习,也没提供样本数据来随着代码来学⋯⋯只能说算是本讲解语言中规中矩的书了。如果只想了解R的用法,可以看看R学习笔记,基本足够了。当然最重要的是去用,这也算是读这本书的另一个收获——让我觉得用着学要比学了再用更有目的更有效吧。