首页>参考读物>计算机科学与技术>专用软件

R的极客理想——高级开发篇
作者 : 张丹 著
出版日期 : 2015-07-11
ISBN : 978-7-111-50512-9
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 342
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书的内容来自作者实际使用R语言的经验总结,以R语言的高级编程为主,辅以跨界知识的综合运用,涉及计算机、统计、数学、金融四个学科的知识。书中首先阐释如何用R语言实现数学统计计算和创建模型,应用包括协同过滤算法、基于矩阵的PageRank算法、遗传算法和金融交易策略模型。详细介绍了R语言的环境空间、文件系统管理、(S3、S4、RC和R6)四种面向对象的程序设计。还介绍完整的R包开发流程,并提供每日中国天气的应用案例和游戏开发的案例,帮助读者创建自己的R包,打开R语言产品化的思路。
  书中介绍了多个场景案例,不仅从学术的角度完成了模型设计,而且用计算机的方法,把产品实现。通过案例的学习,可以让不同学科背景的R语言使用者,站在其他人的角度,找到新的思维方法。

本书适合所有R语言工作者,包括软件工程师、数据科学家、科研工作者以及相关专业的学生。

图书特色

资深R语言用户多年实战经验的结晶,介绍R语言本身的核心技术以及R语言在不同领域的跨学科综合应用,借助每日中国天气的应用案例和游戏开发的案例,揭秘完整的R包开发流程,帮助读者创建自己的R包,打开R语言产品化的思路。

“R的极客理想”系列图书以作者多年开发经验为素材,系统地梳理了R语言的知识。在《R的极客理想——工具篇》中介绍了R语言的30多个工具包的使用方法,并以IT人的视角,告诉读者如何高效地使用第三方R包。
《R的极客理想——高级开发篇》则以R语言的高级编程为主,辅以跨界知识的综合运用。书中首先阐释如何用R语言实现数学、统计计算以及模型建立,应用包括协同过滤算法、基于矩阵的PageRank算法、遗传算法和金融交易策略模型等。详细介绍了R语言的环境空间、文件系统管理、S3、S4、RC和R6四种面向对象的程序设计。还介绍完整的R包开发流程,并提供每日中国天气的应用案例和游戏开发的案例,帮助读者创建自己的R包,打开R语言产品化的思路。
书中介绍了多个场景案例,不仅从学术的角度完成了模型设计,而且用计算机的方法把产品实现。通过案例的学习,可以让不同学科背景的R语言使用者,站在其他人的角度,找到新的思维方法。
《R的极客理想——量化投资篇》将介绍R语言在金融领域的应用,真正地让技术人员把自己的知识变成价值。

作者简介






R语言资深用户,系统架构师,况客科技(Qutke.com)联合创始人。有10年IT程序开发和系统架构设计的经验,精通Java、R和JavaScript三种编程语言,熟悉数据挖掘、统计和金融的多种算法。目前在互联网金融量化投资方向创业中,个人博客Alexa全球排名前8万。


博客:http://blog.fens.me
微博:http://weibo.com/dotabook,@Conan_Z

刘政
SAS中国研发总经理
专业的数据分析师是离不开专业语言的。语言的力量是无穷的,它能够帮助数据分析师充分变现自己的思想。R语言就是数据分析领域广泛使用的语言。国内能够系统地梳理R语言的图书不多,张丹的“R的极客理想”系列正好填补了这个空白,而且正当时。书中很多现实的考量都是你需要的。
刘思喆
京东推荐算法经理
近几年出版的关于R语言的书籍主要从统计学知识或编程语法等角度来写,张丹的《R的极客理想》以作者多年开发经验为素材,从工程角度描述了R语言的诸多让人兴奋的特性,以及R语言同其他主流开发环境的协同。我相信《R的极客理想》可以让数据开发者少走弯路,同时也是对统计工作者视界的有益的补充!
陈堰平
SupStat创始人
学习R语言,不仅是学一门编程语言,同时你也在学习一门新的学科——数据科学。不管你是程序员还是数据分析师,张丹的这本书都会是带你走进数据科学后花园的藏宝图,它会告诉你如何将R语言直接应用在企业环境中,也会告诉你如何将大数据技术与R语言结合,更快更轻巧地创造价值。
王江浩
中科院地理科学与资源研究所博士
富有极客钻研精神的张丹,在本书中带领我们踏上一段奇特的R语言开发之旅。作者结合自己多年实战经验,从基本的R统计计算与算法应用,到R语言内核与面向对象编程、R包开发等高级主题,深入浅出地剖析了R语言底层原理与企业级应用价值,展示了R语言特色与魅力所在。

图书前言

为什么要写这本书
本书是我写的“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语言的真实记录,以R语言的高级开发为主,其中还涉及计算机、统计、数学和金融四个学科的知识。
本书的核心内容包括两方面,一方面是R的高级编程,另一方面是跨界知识的综合运用。对于R的高级编程,本书详细总结了R语言的环境空间的定义和使用、文件系统管理、最新版本R 3.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和Windows 7两种操作系统,在每一节中都有明确的标识,所有的程序都是在R语言3.1.1版本中测试通过的。
R语言还在不断地进步,它将引导一场数据的革命,跨学科的结合是时代趋势,也是我们的机遇!
读者对象
本书适合以下所有R语言工作者:
计算机背景的软件工程师;
R语言的高级使用者;
数据分析背景的数据科学家;
统计背景的科研工作者;
开设相关课程的院校学生。
如何阅读本书
本书的内容分为三个部分。第一部分是R的计算和算法应用(第1~2章),介绍了R语言的知识体系结构,R语言对基础学科的支持,以及通过基础学科实现各种算法,可帮助读者快速了解R语言中的数学计算方法和自定义模型算法开发。
第二部分是深入R语言程序开发(第3~4章),介绍了R语言内核相关的编程,包括环境空间的定义和使用,以及面向对象方法的程序设计和使用,可帮助读者深入了解R语言的底层知识,用面向对象的方法设计复杂的程序结构。
第三部分是开发自己的R包(第5~6章),介绍了R包开发的完整流程,并提供每日中国天气的应用案例和游戏开发的案例,可帮助读者创建自己的R包,打开R语言产品化的思路。
本书有很多综合运用的知识,在阅读本书的时候,建议读者顺序阅读全部的章节。
勘误和支持
由于笔者的水平有限,加之编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,笔者创建了一个在线的图书交流网站(http://onbook.me),方便与读者进行沟通。如果读者在阅读过程中遇到问题,也可以在官方网站中留言,我将尽量在线上为你提供最满意的解答。书中的全部源代码,都可以从机工新阅读网站(www.cmpreading.com)或本书交流网站下载,我也会及时更新代码。如果你有什么宝贵意见,欢迎发送邮件至bsspirit@gmail.com,期待能够得到你真挚的反馈。
致谢
感谢我的创业团队成员林伟林和林伟平,是R语言让我们走在了一起。感谢机械工业出版社华章分社的编辑明永玲,帮助我审阅全部章节,引导我顺利完成书稿。感谢我的爸爸、妈妈和爱人,感谢你们对我工作上的支持和生活上的照顾!
谨以此书献给我最亲爱的家人以及众多R语言爱好者们!
张丹
2014年11月于中国北京

上架指导

计算机\程序设计

封底文字

专业的数据分析师是离不开专业语言的。语言的力量是无穷的,它能够帮助数据分析师充分变现自己的思想。R语言就是数据分析领域被广泛使用的语言。国内能够系统地梳理R语言的图书不多,张丹的“R的极客理想”系列正好填补了这个空白,而且正当时。书中很多现实的考量都是你需要的。——刘政 SAS中国研发总经理


近几年出版的关于R语言的书籍主要从统计学知识或编程语法等角度来写,张丹的《R的极客理想》以作者多年开发经验为素材,从工程角度描述了R语言的诸多让人兴奋的特性,以及R语言同其他主流开发环境的协同。我相信《R的极客理想》可以让数据库开发者少走弯路,同时也是对统计工作者视界的有益的补充! ——刘思喆 京东推荐算法经理


学习R语言,不仅是学一门编程语言,同时你也在学习一门新的学科——数据科学。不管你是程序员还是数据分析师,张丹的这本书都会是带你走进数据科学后花园的藏宝图,它会告诉你如何将R语言直接应用在企业环境中,也会告诉你如何将大数据技术与R语言结合,更快更轻巧地创造价值。——陈堰平 SupStat创始人

富有极客钻研精神的张丹,在本书中带领我们踏上一段奇特的R语言开发之旅。作者结合自己多年实战经验,从基本的R统计计算与算法应用,到R语言内核与面向对象编程、R包开发等高级主题,深入浅出地剖析了R语言底层原理与企业级应用价值,展示了R语言特色与魅力所在。——王江浩 中科院地理科学与资源研究所博士

作者简介

张丹 著:暂无简介

图书目录

前言
第一部分 R的计算和算法应用
第1章 R语言知识体系和数学函数 2
1.1 R语言知识体系概览 2
1.1.1 R语言的知识体系结构 3
1.1.2 R语言学习 9
1.2 R语言中的数学计算 11
1.2.1 基本计算 12
1.2.2 三角函数计算 17
1.2.3 复数计算 22
1.2.4 方程计算 23
1.3 概率基础和R语言 28
1.3.1 随机变量介绍 28
1.3.2 随机变量的数字特征 29
1.3.3 极限定理 33
1.4 常用连续型分布介绍及R语言实现 35
1.4.1 均匀分布 35
1.4.2 正态分布 37
1.4.3 指数分布 39
1.4.4 伽玛分布 41
1.4.5 韦布尔分布 43
1.4.6 卡方分布 44
1.4.7 F分布 46
1.4.8 t分布 48
1.4.9 贝塔分布 50
1.5 R语言的导数计算 51
1.5.1 导数计算 52
1.5.2 初等函数的导数公式 54
1.5.3 二阶导数计算 57
1.5.4 偏导数计算 58
第2章 R语言的算法实现 61
2.1 用R重写Mahout协同过滤算法 61
2.1.1 Mahout的推荐算法模型 62
2.1.2 R语言模型实现 64
2.1.3 算法实现的原理——矩阵变换 67
2.1.4 算法总结 69
2.2 PageRank算法R语言实现 69
2.2.1 PageRank算法介绍 70
2.2.2 PageRank算法原理 70
2.2.3 R语言单机算法实现 72
2.2.4 R语言分步式算法实现 75
2.3 二条均线打天下 78
2.3.1 移动平均线 79
2.3.2 均线模型 79
2.3.3 用R语言实现均线模型 80
2.4 R语言中的遗传算法 94
2.4.1 遗传算法介绍 94
2.4.2 遗传算法原理  96
2.4.3 R语言中的遗传算法 97
第二部分 深入R语言程序开发
第3章 R内核编程 106
3.1 撬动R内核的高级工具包pryr 106
3.1.1 pryr介绍 107
3.1.2 pryr安装 107
3.1.3 pryr使用 108
3.2 揭开R语言中环境空间的神秘面纱 120
3.2.1 R语言的环境空间 121
3.2.2 环境空间的特征 124
3.2.3 环境空间的访问 126
3.3 解密R语言函数的环境空间 129
3.3.1 R语言的函数环境空间 129
3.3.2 封闭环境 130
3.3.3 绑定环境 130
3.3.4 运行环境 131
3.3.5 调用环境 132
3.3.6 完整的环境操作 133
3.4 用R进行文件系统管理 134
3.4.1 文件系统介绍 135
3.4.2 目录操作 135
3.4.3 文件操作 139
3.4.4 几个特殊的目录 142
3.5 R语言3.1.x版本新特性 143
3.5.1 R语言 3.1.x版本介绍 144
3.5.2 R语言3.1.0新特性及代码描述 145
3.5.3 R语言3.1.1新特性及代码描述 157
第4章 面向对象编程 162
4.1 R语言面向对象编程 162
4.1.1 什么是面向对象 163
4.1.2 R为什么要进行面向对象编程 164
4.1.3 R的面向对象编程 164
4.2 R语言基于S3的面向对象编程 169
4.2.1 创建S3对象 170
4.2.2 泛型函数和方法调用 171
4.2.3 查看S3对象的函数 172
4.2.4 S3对象的继承调用方式 174
4.2.5 S3对象的缺点 174
4.2.6 S3对象的使用 175
4.3 R语言基于S4的面向对象编程 176
4.3.1 创建S4对象 176
4.3.2 访问S4对象的属性 179
4.3.3 S4的泛型函数 180
4.3.4 查看S4对象的函数 180
4.3.5 S4对象的使用 181
4.4 R语言基于RC的面向对象编程 188
4.4.1 RC对象系统介绍 189
4.4.2 创建RC类和对象 189
4.4.3 对象赋值 192
4.4.4 定义对象的方法 193
4.4.5 RC对象内置方法和内置属性 194
4.4.6 RC类的辅助函数 199
4.4.7 RC对象系统的使用 201
4.5 R语言基于R6的面向对象编程 206
4.5.1 初识R6 207
4.5.2 创建R6类和实例化对象 207
4.5.3 R6类的主动绑定 211
4.5.4 R6类的继承关系 212
4.5.5 R6类对象的静态属性 214
4.5.6 R6类的可移植类型 215
4.5.7 R6类的动态绑定 216
4.5.8 R6类的打印函数 217
4.5.9 实例化对象的存储 218
4.5.10 R6面向对象系统的案例 220
第三部分 开发自己的R包
第5章 R包开发 224
5.1 从头开发自己的R包 224
5.1.1 用Linux命令行开发R包 225
5.1.2 RStudio中开发R包 231
5.2 标准化R包开发流程 235
5.2.1 开发流程介绍 235
5.2.2 编写功能代码 236
5.2.3 调试程序 237
5.2.4 单元测试 238
5.2.5 撰写文档 239
5.2.6 程序打包 241
5.2.7 程序发布 242
5.3 R语言天气可视化应用 244
5.3.1 项目介绍 245
5.3.2 系统架构设计 246
5.3.3 R语言程序实现 247
5.4 R包开发——每日中国天气 260
5.4.1 构建项目 260
5.4.2 静态数据 261
5.4.3 编写功能代码 265
5.4.4 项目配置文件 271
5.4.5 调试程序 272
5.4.6 程序打包 273
第6章 R语言游戏之旅 277
6.1 R语言键盘和鼠标事件 277
6.1.1 R语言图形事件 278
6.1.2 图形事件API 278
6.1.3 键盘事件 279
6.1.4 鼠标事件 280
6.2 贪食蛇游戏入门 282
6.2.1 贪食蛇游戏介绍 282
6.2.2 场景设计 283
6.2.3 程序设计 284
6.2.4 R语言实现 287
6.3 R语言游戏框架设计 294
6.3.1 贪食蛇的面向对象改造 295
6.3.2 游戏框架定义 297
6.3.3 在框架中重新实现贪食蛇游戏 297
6.4 R语言制作游戏2048 303
6.4.1 2048游戏介绍 304
6.4.2 场景设计 304
6.4.3 程序设计 305
6.4.4 R语言实现 307
6.5 发布gridgame游戏包 316
6.5.1 知识储备 316
6.5.2 gridgame包开发 318
6.5.3 gridgame包发布 326

教学资源推荐
作者: 何宁 吴黎兵 滕冲
作者: 崔冬 黄骁
作者: 黄燕 吴平 等
作者: [美]哈德利·威克汉姆 (Hadley Wickham)著
参考读物推荐
作者: 华为企业架构与变革管理部 著
作者: 王红卫 等编著
作者: J.A.Hernandez, J.R.S.Elchiguerra, E.R.Bueno, S.A.Servera