前 言
为什么要写这本书
我是一名程序员,前后做了10年的程序开发工作。在这10年间,我从程序员一路做到架构师,经历了太多的系统和应用。我做过手机游戏,写过编程工具;做过大型Web应用系统,写过公司内部CRM;做过SOA的系统集成,写过基于Hadoop的大数据工具;做过外包,做过电商,做过团购,做过支付,做过SNS,也做过移动SNS。以前只用Java,然后开始用PHP……如同其他程序员一样,我一度陶醉于追求各种技术的创新,但始终有一个问题困扰着我,那就是如何才能够将我所掌握的技术转变成价值?这就好比我面对着一座金山,我拥有先进的技术,可以制作各种性能稳定、功能卓越的挖掘机器,但我不懂如何将矿石提纯,变成金子!每每看到别人利用我的技术挖掘出金子时,我只能满脸的羡慕,心中无限的不甘。
直到遇见R语言,我豁然开朗。R语言为我从另外一个角度开启了宝藏的大门,也让我对自己的职业重新思考、规划,最后坚定了我向统计、金融行业的转型。如果你也存在以上的问题,不如随着本书一起进入R语言的世界,领略R语言特有的魅力,通过对R语言的学习,重新认识大数据的价值,更深一步地提升个人价值。
随着我与统计、金融领域的朋友交流地逐步深入,我深刻地体会到,他们对R语言的实际使用也存在着很大的问题和困惑。比如,他们在某些实验室环境下,使用R语言可以很轻松、很顺利地实现预期效果,但是移植到真实环境下,面对浩瀚繁复的大数据,在使用R语言的过程中出现了很多问题。这就好比面对一座金山,他们掌握着先进的提纯技术,但他们所使用的挖掘、采集工具却还停留在石器时代!使用工具的落后,使他们要面对大量R语言之外的问题,这让他们应接不暇,甚至崩溃!有的人甚至因此认为,R语言只是一种实验室语言,至少以现在的技术水平无法将它运用到现实生活中,R语言在现实生活中广泛应用,简直是天方夜谭!
是的,如果你是一名没有计算机背景的R语言使用者,你在实际使用中也同样会遇到许多这样或那样的问题,面对这些棘手的问题寝食难安,尝试着通过各种方式寻求解决方案。其实,在计算机领域,这些问题已经早就有了成熟、有效的解决方案。
本书的内容来自我在R语言实际使用过程中的经验总结,基本都是我在工作中使用R语言的真实记录,其中涉及计算机、互联网、数据库、大数据、统计、金融等领域,详细总结了R语言在实际使用时与Java、MySQL、Redis、MongoDB、Cassandra、Hadoop、Hive、HBase等技术综合运用的解决方案,具有实战性,可操作性强。如果你与R语言接触时间不长,本书可以让你看到R语言在各行业、各领域所散发的魅力;如果你在某行业使用R语言已经有一段时间了,可能在使用R语言的过程中遇到了瓶颈,本书将让你看到R语言在与其他计算机语言结合后所迸发的强大活力;如果你是技术人员,本书中有全局观的案例实施,也许会给你带来新的启发,甚至跟我一样,重新规划自己的职业生涯,找到学习、奋斗的新方向;如果你是企业的中高层管理者,在本书中可以看到我们已经实现的技术成果,如果需要,你甚至可以按照书中记录的详细操作步骤,直接在企业环境中实施,直接获利!
在此,我不得不强调,本书不是入门书,不讲R的语法,如果你想学习R语言的基础语言入门知识,那么,你来错地方了。但是,如果你已经具备了一定的R语言基础,但不一定具有计算机语言背景,我将告诉你R语言在真实环境下到底都能够做什么,并且详细地告诉你怎样一步一步地实施。
在与各界R语言初学者的交流中,我发现,入门后,学习R语言最大的问题,在于如何使用R语言的众多软件包,而介绍这方面的图书很难找到,只有一些网上流传的小册子。本书涉及了30个R语言包,并结合我的使用心得及案例分析,相信会解决大家R语言入门后的困扰。
本书是“R的极客理想”系列图书的第一本,姊妹篇《R的极客理想—高级开发篇》将深入介绍R语言底层原理,并使用R语言开发出企业级的应用。
本书的使用环境涉及Linux Ubuntu和Windows 7两种操作系统,R语言包的2.15.3和3.0.1两个版本,在每一节中都有明确的标识。
R语言还在不断地进步和更新,它将引导一场数据的革命,跨学科的结合是时代趋势,也是我们的机遇!
目 录
前言
第一部分 R基础
第1章 R语言基础包
1.1 R是最值得学习的编程语言
1.1.1 我的编程背景
1.1.2 为什么我会选择R
1.1.3 R的应用前景
1.1.4 时代赋予R的任务
1.2 R的历史版本安装
1.2.1 R在Windows中安装
1.2.2 R在Linux Ubuntu中安装
1.2.3 R的最新版本安装
1.2.4 R的指定版本安装
1.3 fortunes 记录R语言的大智慧
1.3.1 fortunes介绍
1.3.2 fortunes安装
1.3.3 fortunes包的使用
1.4 formatR 代码自动化排版
1.4.1 formatR介绍
1.4.2 formatR安装
1.4.3 formatR的使用
1.4.4 formatR的源代码解析
1.4.5 源代码中的Bug
1.5 多人在线协作R开发RStudio Server
1.5.1 RStudio和RStudio Server
1.5.2 RStudio Server安装
1.5.3 RStudio Server使用
1.5.4 RStudio Server多人协作
1.6 R和JSON的傻瓜式编程
1.6.1 rjson包介绍
1.6.2 RJSONIO包介绍
1.6.3 自定义JSON的实现
1.6.4 JSON性能比较
1.7 R语言的高质量图形渲染库Cairo
1.7.1 Cairo介绍
1.7.2 Cairo包安装
1.7.3 Cairo使用
1.8 caTools:一个奇特的工具集
1.8.1 caTools介绍
1.8.2 caTools安装
1.8.3 caTools使用
第2章 时间序列基础包
2.1 R语言时间序列基础库zoo
2.1.1 zoo包介绍
2.1.2 zoo安装
2.1.3 zoo包的使用
2.2 可扩展的时间序列xts
2.2.1 xts介绍
2.2.2 xts包的安装
2.2.3 xts包的使用
2.3 时间序列可视化plot.xts
2.3.1 xtsExtra介绍
2.3.2 xtsExtra安装
2.3.3 xtsExtra包的使用
第3章 R性能监控包
3.1 R语言本地缓存工具memoise
3.1.1 memoise介绍
3.1.2 memoise安装
3.1.3 memoise使用
3.1.4 memoise()函数源代码分析
3.2 R语言性能监控工具Rprof
3.2.1 Rprof()函数介绍
3.2.2 Rprof()函数的定义
3.2.3 Rprof()函数使用: 股票数据分析案例
3.2.4 Rprof()函数使用: 数据下载案例
3.2.5 用profr包可视化性能指标
3.2.6 Rprof的命令行使用
3.3 R语言性能可视化工具lineprof
3.3.1 lineprof介绍
3.3.2 lineprof安装
3.3.3 lineprof使用