《R的极客理想—工具篇》—— 导读

前  言

为什么要写这本书
我是一名程序员,前后做了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使用

时间: 2024-11-03 01:09:49

《R的极客理想—工具篇》—— 导读的相关文章

《深入理解Scala》——第1章,第1.2节当函数式编程遇见面向对象

1.2 当函数式编程遇见面向对象 深入理解Scala 函数式编程和面向对象编程是软件开发的两种不同途径.函数式编程并非什么新概念,在现代开发者的开发工具箱里也绝非是什么天外来客.我们将通过Java生态圈里的例子来展示这一点,主要来看Spring Application framework和Google Collections库.这两个库都在Java的面向对象基础上融合了函数式的概念,而如果我们把它们翻译成Scala,则会优雅得多.在深入之前,我们需要先理解面向对象编程和函数式编程这两个术语的含义

《深入理解Scala》——第1章,第1.4节与JVM的无缝集成

1.4 与JVM的无缝集成 深入理解Scala Scala的吸引力之一在于它与Java和JVM的无缝集成.Scala与Java有很强的兼容性,比如说Java类可以直接映射为Scala类.这种紧密联系使Java到Scala的迁移相当简单,但在使用Scala的一些高级特性时还是需要小心的,Scala有些高级特性是Java里没有的.在Scala语言设计时已经小心地考虑了与Java无缝交互的问题,用Java写的库,大部分可以直接照搬(as-is)到Scala里. 1.4.1 Scala调用Java 从S

《深入理解Scala》——第2章,第2.1节学习使用Scala交互模式(REPL)

第2章 核心规则深入理解Scala 本章包括的内容: • 使用Scala交互模式(Read Eval Print Loop 简称REPL) • 面向表达式编程 • 不变性(Immutability) • Option类 本章内容覆盖了每个新Scala开发者都需要知道的几个主题.本章不会深入到每个主题里,但是会讲到可以让你自己去接着探索的程度.你将学会使用REPL,学会如何利用这个工具做软件的快速原型开发.然后我们会学到面向表达式编程,并从另一个视角来看控制结构是怎么回事.在此基础上,我们来研究不

《深入理解Scala》——第1章,第1.3节静态类型和表达力

1.3 静态类型和表达力 深入理解Scala 开发人员中有一个误解,认为静态类型必然导致冗长的代码.之所以如此是因为很多继承自C的语言强制要求程序员必须在代码中多处明确地指定类型.随着软件开发技术和编译器理论的发展,情况已经改变.Scala利用了其中一些技术进步来减少样板(boilerplate)代码,保持代码简洁. Scala做了以下几个简单的设计决策,以提高代码表达力. • 把类型标注(type annotation)换到变量右边. • 类型推断. • 可扩展的语法. • 用户自定义的隐式转

《深入理解Scala》——第1章,第1.5节总结

1.5 总结 深入理解Scala 本章中,你学到了一些Scala的设计理念.设计Scala的初衷在于把不同语言中的多种概念融合起来.Scala融合了函数式和面向对象编程,尽管显然Java也已经这么做了.Scala精选其语法,极大地减少了语言中的繁冗之处,使一些强大的特性可以优雅地表达,比如类型推断.最后,Scala和Java能够紧密集成,而且运行在Java虚拟机上,这或许是让Scala变成一种实用选择的最重要的一点.几乎不花代价就可以把Scala用于我们的日常工作中. 因为Scala融合了多种概

《深入理解Scala》——第1章,第1.1节Scala一种混合式编程语言

第1章 Scala--一种混合式编程语言 Scala是一种将其他编程语言中的多种技巧融合为一的语言.Scala尝试跨越多种不同类型的语言,给开发者提供面向对象编程.函数式编程.富有表达力的语法.静态强类型和丰富的泛型等特性,而且全部架设于Java虚拟机之上.因此开发者使用Scala时可以继续使用原本熟悉的某种编程特性,但要发挥Scala的强大能力则需要结合使用这些有时候相互抵触的概念和特性,建立一种平衡的和谐.Scala对开发者的真正解放之处在于让开发者可以随意使用最适合手头上的问题的编程范式.

《深入理解Scala》——第2章,第2.2节优先采用面向表达式编程

2.2 优先采用面向表达式编程 深入理解Scala 面向表达式编程是个术语,意思是在代码中使用表达式而不用语句.表达式和语句的区别是什么?语句是可以执行的东西,表达式是可以求值的东西.在实践中这有什么意义呢?表达式返回值,语句执行代码,但是不返回值.本节我们将学习面向表达式编程的全部知识,并理解它对简化程序有什么帮助.我们也会看一下对象的可变性,以及可变性与面向表达式编程的关系. 作者注:语句VS表达式 语句是可以执行的东西,表达式是可以求值的东西. 表达式是运算结果为一个值的代码块.Scala

《深入理解Scala》——第2章,第2.3节优先选择不变性

2.3 优先选择不变性 深入理解Scala 编程中的不变性指对象一旦创建后就不再改变状态.这是函数式编程的基石之一,也是JVM上的面向对象编程的推荐实践之一.Scala也不例外,在设计上优先选择不变性,在很多场景中把不变性作为默认设置.对此,你可能一下子会不适应.本节中,我们将学到不变性对于判等问题和并发编程能提供什么帮助. Scala里首先要明白的是不变对象和不变引用(immutable referene)的区别.Scala里的所有变量都是指向对象的引用.把变量声明为val意味着它是个不变"引

《深入理解Scala》——第2章,第2.4节用None不用null

2.4 用None不用null深入理解Scala Scala在标准库里提供了scala.Option类,鼓励大家在一般编程时尽量不要使用null.Option可以视作一个容器,里面要么有东西,要么什么都没有.Option通过两个子类来实现此含义:Some和None.Some表示容器里有且仅有一个东西,None表示空容器,有点类似List的Nil的含义. 在Java和其他允许null的语言里,null经常作为一个占位符用于返回值,表示非致命的错误,或者表示一个变量未被初始化.Scala里,你可以用

《深入理解Scala》——第2章,第2.5节多态场景下的判等

2.5 多态场景下的判等 深入理解Scala 众所周知,为多态的面向对象系统定义合适的判等和散列方法是个特别难的过程.这是因为子类可能在整个过程中造成一些相当怪异的问题,尤其是当类型层次上有多个实体(concrete)级别的时候.一般来说,对于需要比引用判等更强的判等(译者注:比如需要判断对象内部数据)的类,最好避免多层实体类层次.这是什么意思呢?有些时候类只需要引用判等就够了.也就是说只要两个对象不是同一个实例就判为不等.但是如果我们需要判断两个不同实例是否相等,而且又有多层实体类层次(mul