R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。
R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。
要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥到各个领域。让我们一起动起来吧,开始R的极客理想。
关于作者:
- 张丹(Conan), 程序员Java,R,Javascript
- weibo:@Conan_Z
- blog: http://blog.fens.me
- email: bsspirit@gmail.com
转载请注明出处:
http://blog.fens.me/r-book2/
前言
终于等到R的极客理想系列,第二本《R的极客理想-高级开发篇》一书出版了。写书不仅是一个漫长的过程,更是知识的浓缩和再精华的过程;写书不仅把自己会的东西记录下来,还要站在读者的角度,让其他人也能看得懂;写书不同于写博客,不仅要保证超过5遍以上的审阅,还要遵守出版的各种规则,包括格式、文字、目录、图片,公式,代码,引用….
写书不是一件容易的事情,但我做到了。希望更多的朋友都能静心下来,写本自己的书。尊重知识,就是尊重你的未来。
目录
- 写书体验
- 为什么要写这本书
- 如何阅读本书
- 致谢
1. 写书体验
写一本书不难,但用心写一本书确实也不容易。本书是R的极客理想系列的第二本书,有了第一本书的经验,没有在排版和布局上面花太多时间。但是各种的小问题,也让本书的出版变得有些漫长。本书中涉及到一些基础学科的知识,虽然我自己能明白,但是要保证严谨的表达,对我确实是一个不小的难度。另外,书中有一节用到了中国地图进行天气的可视化,由于地图是R直接画的,没有通过测绘局审核,最后被要求只能把所有关于中国地图的图片去掉,也是很无奈的事情。等写下本书的时候,一定要提前注意这些细节。
本书中的文章有讲原理的、有讲实战的、也有讲跨学科,有些文章配有视频,可以让读者更加易于理解,本来设计了买书送视频红包,但由于淘宝视频的一些规则,又让这个红包计划搁浅。
图书介绍的网站http://onbook.me/book,介绍了本书的基本情况,包括序、前方、目录、勘误、代码、试读、封面、交流等几个方面内容,读者有任何问题,都可以在网站中留言,并得到我的回复。同时,可以加QQ群:383275651,和更多的网友进行交流。网站还有视频专区(http://onbook.me/video),提供我录制的各种视频课程,包括 R, Nodejs, Hadoop, 金融量化投资 等,视频收入仅用于网站的运营成本。
最后附上购买链接,各大网站都能买到,建议先去比比价:互动出版社,京东,当当,亚马逊
2. 为什么要写这本书
本书是我写的《R的极客理想系列丛书》的第二本书,主要介绍了R语言本身的核心技术、R语言的高级开发应用、R语言与其他学科及知识领域的跨学科综合应用。
其实,早在我第一本书《R的极客理理想-工具篇》中,就已经介绍了R语言的30多个工具包的使用方法,并以IT人的角度,告诉读者如何高效地使用第三方R包,把原有IT知识运用到R语言的学习过程中。但由于一本书的篇幅有限,《R的极客理理想-工具篇》只讲了如何使用,没有讲原理。
而本书将弥补这一遗憾,我将在书中主要介绍R语言本身的核心技术:包括环境空间、面向对象、文件管理、数学计算、R包开发等主题。我希望通过这本书,可以让读者更深入的了解R语言、掌握R语言的这些核心技术、理解R语言的第三方包的特性,甚至可以自己动手开发出属于自己风格的优秀R包,说不定,不久的将来我也会用到你们开发出来的R包而大为惊艳。
除此之外,本书的另一大亮点就是:R语言与其他学科知识在不同领域的跨学科综合应用。在书中,我将毫无保留的向读者展示,我是怎样将R语言与其他知识相结合,在不同领域让R大放异彩的。相信这部分内容会让很多读者眼前一亮,为之惊叹,原来R还可以这么玩儿!也希望这部分内容,可以让大家有所启发,让各行业、各知识领域的朋友可以接触到R、运用R。时至今日,R语言已经不再是局限于科学家们使用的实验室语言,它已经具备了实际开发应用的能力,并且在挖掘数据价值、发现数据规律、创造数据财富等方面,极具智慧和创造性!
如果把R语言比作一门武功,《R的极客理理想-工具篇》就是兵器使用秘籍,(比如什么“打狗棍法”啊、“独孤九剑”啊、“小李飞刀”啊)它可以帮助你在短时间内,便捷、有效的提高工作效率,让你R语言的修为有一个明显的提高,但时间久了,你会因各种原因遇到自己的瓶颈,难以突破。
而本书则是武功的内功心法,(比如什么《九阳真经》、《北冥神功》之类的,敬请对号入座,但别拿《葵花宝典》说事儿,谢谢!)不仅介绍了R语言本身的核心技术,帮你打通任督二脉;而且着重讲述了R语言在实际使用过程中,如何与其他学科、其他领域结合运用,融会贯通,以无招胜有招,甚至自立门派、成为一代宗师都是有可能的!(咳咳,扯远了!)
在这里,我必须再次严肃的强调,本书不是R语言的入门书,零基础的各位要前补充一些R语言的基础知识!本书包括了R语言开发的高级内容,阅读本书,不但需要你有R语言使用经验,而且需要你具备一定的计算机背景知识和经验,只有这样,你才能更深刻地体会书中我的经验总结。
本书的内容完全是我在R语言的实际使用过程中总结而得,基本都是我在工作中使用R语言的真实记录,以R语言的高级开发为主,其中还涉及到计算机、统计、数学、金融四个学科的知识。
本书的核心内容包括2个方面:一方面是R的高级编程,另一方面是跨界知识的综合运用。对于R的高级编程,本书详细总结了R语言的环境空间的定义和使用,文件系统管理,最新版本R3.1.1的新特性,让你体会到R语言的底层设计;全面的介绍了R语言中四种面向对象体系的程序设计和使用,通过面向对象的程序设计,让R语言有能力做出符合现实世界的复杂应用;介绍完整的R包开发流程,并提供每日中国天气的应用案例和游戏开发的案例,帮助读者创建自己的R包,打开R语言产品化的思路。对于跨界知识的综合运用,R语言不仅可以非常方便地进行那些让人头疼的数学计算,不论是初等数学或者高等数学,概率或者统计都是非常轻松、方便的,数学变得从此不再神秘莫测、遥不可及。用R语言还可以创建各种的模型,书中算法案例包括协同过滤算法模型,基于矩阵计算的PageRank模型,金融的交易策略模型,和遗传算法的使用。几行代码几钟,就可以让我们头脑中的想法,变成可以运行算法原型了。
另外,R虽然不是适合开发游戏,但如果真用R语言做个游戏2048,也就是200行代码,还有哪种语言可以匹敌呢。说到这里肯定有人问,“你为什么要用R做游戏啊?”“为什么不用Java做啊?”“我不用R做用Java做不是也一样么?”其实,我就是想用这种方式向大家展示R语言简洁的风格、自由的思想、极富想象的创造力,希望用我这个“R极客”的玩耍心态,引发大家对R的无限想象! 最后,我们把模型产品化,发布一个属于自己的R包,让全世界人都能使用,是一件多么让人兴奋的事情。
在与各界R语言使用者的交流中,我发现,有编程背景的使用者,可以写出干净漂亮且运行高效的代码,但由于欠缺统计知识,对模型优化就只能束手无措、无可奈何了。而那些具备统计背景的使用者,虽然可以独立地完成一个模型的设计和优化,但对于如何产品化实施,就完全找到不办法了。
本书中介绍了多个场景案例,不仅从学术的角度完成了模型的设计,而且用计算机的方法,把产品进行实现。通过案例的学习,可以让不同学科背景的R语言使用者,站在其他人的角度,找到新的思维方法。这是本书中的又一大亮点!
对于大多数程序员来说,学习R语言比较轻松容易,但运用R语言却显得困难的多。R语言虽然没有像C/C++一样的复杂程序语法,也不用像Java一样宏观考虑全局架构,更没有像Javascript一样的灵活的使用。但是,R语言面向数据本身的编程思想,是完全有别于其他的编程语言的,这就使得很多程序员在使用R语言时虽然语法会了,但依旧不知道如何应用。
我认为,学习R语言是为了找到个性化的自己,定位自己,综合运用自身的知识进行跨学科的创新,而不是去复制别人的想法。让R语言的跨界运用,需要你要具备基础学科能力(初等数学,高等数学,线性代数,概率论,统计学) + 业务知识(金融,生物,互联网) + IT技术(R语法,R包,数据库,算法) 的结合,所以只有把自己的综合知识水平提升,你才真正地学好R语言。换句话说,一旦你学成了R语言,你将是不可被替代的。
在此,我不得不再次强调,本书不是入门图书,而是R语言的高级开发图书。本书不讲R的入门语法,也不介绍R语言第三方包的使用。但是,如果你已经具备了一定的R语言基础,想把自己的R语言模型产品化,那么我将告诉你如何提高程序的可靠性和可扩展性,以及如何发布属于自己的R包。
本书是R的极客理想系列图书的第二本,第三本《R的极客理想-量化投资篇》将介绍R语言在金融领域的应用,通过R语言构建交易模型,并实现自动化交易的过程,真正地让技术人员把自己的知识变成价值。
本书的使用环境涉包括Linux Ubuntu和Window7两种操作系统,在每一节中都有明确的标识,所有的程序都是在R语言3.1.1版本中测试通过。
R语言还在不断的进步和更新,它将引导一场数据的革命,跨学科的结合是时代趋势,也是我们的机遇!
3. 如何阅读本书
本书《R的极客理想-高级开发篇》的思维导图:
本书的内容分为三个部分:
- 第一部分是R的计算和算法应用(第1~2章),介绍了R语言的知识体系结构,R语言对基础学科的支持,通过基础学科实现各种算法。帮助读者快速了解R语言中数学计算方法,和自定义模型算法开发。
- 第二部分是深入R语言程序开发(第3~4章) ,介绍了R语言内核相关的编程,包括环境空间的定义和使用,以及面方对象方法的程序设计和使用。帮助读者打通深入了解R语言的底层知识,用面向对象的方法设计复杂的程序结构。
- 第三部分是开发自己的R包(第5~6章),介绍了R包开发的完整流程,并提供每日中国天气的应用案例,和游戏开发的案例。帮助读者创建自己的R包,打开R语言产品化的思路。
本书有很多综合运用的知识,在您阅读本书的时候,建议读者顺序阅读全部的章节。
4. 致谢
感谢机械工业出版社华章公司的编辑 明永玲(@明永玲编辑),帮助我审阅全部章节,引导我能顺利完成书稿。
感谢 刘政老师(@刘政-SAS ),刘思喆(@刘思喆), 陈堰平(@陈堰平), 王江浩博士(@王江浩CAS) ,4位好友为图书写的推荐,简而精,突出书中亮点。
感谢我的团队,林伟林、林伟平、邓一硕,让我们通过R语言走在了一起。
感谢我的家人,感谢你们对我工作上的支持和生活上的照顾!
转载请注明出处:
http://blog.fens.me/r-book2/