编辑推荐

有许多优秀的关于可视化、数据科学和包开发方面的R资源。有成百上千零散的简介、网页和论坛讲解如何在特定的领域中使用R。直到现在,很少有人编写关于如何简单地使R更高效地工作方面的内容。这本实践经验的指南将教初学者和经验丰富的R使用者如何编写高效的R代码。
借助多年教授R课程的经验,《高效R语言编程》作者提供了从优化安装RStudio到借助C++的优势的广泛范围的实践建议,这使得《高效R语言编程》成为任何R使用者书架的有益补充。广泛背景的学者、商业用户和程序员都将受益于《高效R语言编程》的指导。

内容简介

关于设置R编程环境的建议。
探索一般编程概念和R的编码技术。
理解高效R工作流的组成部分。
学习在R中如何高效的读写数据。
深入探讨清理原始数据(数据木匠)的重要技巧。
使用性能分析、标准技巧和其他方法优化你的代码。
确定你用于R计算的硬件性能。
大化R协作编程的好处。
促使你从R初学者往R程序员转变。

作者简介

ColinGillespie是英国纽卡斯尔大学的高级讲师(副教授)。他的研究领域是高性能统计计算与贝叶斯统计。他常被JumpingRivers聘为顾问,自2005年开始讲授R语言。
RobinLovelace是利兹学院的运输研究(ITS)与数据分析(LIDA)的研究员。Robin几年来使用R语言进行学术研究,并为各层次学生讲述了大量的R课程。Robin在多个应用项目中使用R。

精彩书评

“作者写了篇清晰的短文,简短有力地回答了‘为什么高效编程’这种对编程和生产率的双重关注是很非常用的。”

——GarrettGrolemund

RStudio的资深教师,

《RforDataScience》和《Hands-onProgrammingwithR》(均由O'Reilly出版)的作者

目录

目录
前言1
第1章概述7
软件要求7
读者对象和如何使用《高效R语言编程》8
什么是效率9
R语言的高效性10
为何需要高效?12
通用的效率技巧13
基准测试与性能测试15
图书资源20
参考文献20
第2章高效安装22
软件要求23
高效R配置的5个高级技巧23
操作系统23
R版本26
R启动30
RStudio41
BLAS和其他R解释器51
参考文献54
第3章高效编程55
软件要求(配置)55
高效编程5个技巧55
一般性建议56
与用户交互61
因子(Factors)64
Apply函数族66
缓存变量70
字节编译73
参考文献76
第4章高效工作流77
前提条件77
高效工作流的5条高级技巧77
项目规划类型学78
项目规划与管理80
包的选择84
发布89
参考文献93
第5章高效输入/输出94
软件配置95
关于数据I/O的5条高级技巧95
使用rio的通用数据导入95
纯文本格式97
二进制文件格式103
从因特网获取数据106
访问包中的数据107
参考文献108
第6章高效数据木匠109
软件配置110
高效数据木匠的5条高级技巧110
高效的tibble数据框110
使用tidyr与正则表达式整理数据112
使用dplyr高效处理数据118
使用数据库130
使用data.table处理数据134
参考文献137
第7章高效优化138
软件配置139
高效优化的5条高级技巧139
代码分析139
例子:模仿Monopoly141
高效的基础R143
例子:优化move_square()函数150
并行计算151
Rcpp154
参考文献164
第8章高效硬件165
软件配置165
高效硬件的5条高级技巧165
背景知识:什么是字节?166
随机存取存储器167
硬盘驱动器:HDD与SSD170
操作系统:32位或64位171
中央处理器172
第9章高效协作175
软件配置176
编码风格176
版本控制182
代码审查186
参考文献187
第10章高效学习188
软件配置188
高效学习的高级5条技巧188
使用R的内部帮助189
在线资源196
提出问题198
深入学习199
传播知识201
参考文献201
附录A依赖包203
附录B参考文献205

前言/序言

前言
高效R语言编程》可使你的R编程工作事半功倍,它是关于计算效率和编程效率的。现在有着大量优秀R语言资源,例如可视化(如Chang2012)、数据科学(如Grolemund与Wichham2016)以及包开发(如Wickham2015)。另外还有大量的关于R语言在特定领域的使用资源,包括贝叶斯统计、机器学习和地理信息系统。然而,关于如何轻松高效地应用R语言的资料非常稀缺。有关技巧、注意事项和数十年的该主题知识沉淀在大量网页、Email讨论和论坛中广泛流传着,但这种情况使R用户更难理解如何编写高效R代码。

在教学过程中,我们发现该状况同时存在于初学者和老手中。不管是理解避免循环应用R的向量对象和如何设置你的.Rprofile和.Renviron文件的问题,还是驾驭R的优秀接口提升性能,效率的概念是关键的。《高效R语言编程》的目标是从技巧、警告、编程诀窍中为R程序员提取出长久有效的单一、内聚的精华。

高效R语言编程》内容来自于我们的学生的问题,各种培训中不同水平的、各行各业的学生数年来不断咨询如何使他们的R更快。怎样将计算机科学的通用原则(例如不要编写同一代码,即DRY)应用到R语言的具体代码中。怎样使R代码融入高效流程中,包括项目启动、协作开发及简评阶段?如何才能快速学习使用新的包或者新函数?

高效R语言编程》包含的10章内容解答了不止上述问题。每章从基本原理开始介绍,而后逐步推进到高级内容,这样可适合不同水平的读者。然而更高级的话题(如并行编程及C++)可能暂时对R新手无任何意义,《高效R语言编程》是采用慢开头进而打下扎实基础的讲述方式帮助读者走完R语言的糟糕的陡峭学习曲线。这样即
使资深R用户也能从中找到先前隐藏的高明建议。在讲述这类资料时,我们经常听到“为何以前没有人告诉我可以这样做呢?”

高效编程不应看成可有可无的附属品,随着项目和数据集的增大,高效编程的重要性也在增加。事实上,《高效R语言编程》是在我教基于R的大数据课程过程中构思出来的,而该课程是你要处理大量数据集以及保证代码高效的必修课。即使面对小量数据情况,快速编写运行速度快的高效代码是成功代码的必备特征。我们发现,高效编程的概念在所有R社区的分区中都是非常重要的。无论你偶尔使用R(例如,因为它的无与伦比的统计包),还是为了开发包或者正在开发大型的合作项目(高效是至关重要的项目),代码高效均严重影响到你的工作效率。

最后,高效是一个事半功倍的话题。拿汽车作类比,你是想一满箱油(或者充满电)开车驾驶1000km,还是每50km就更换一辆老破旧的汽车呢?或者你愿意选择一辆高效的汽车还是一辆自行车呢?同理,高效的R代码在各方面均超越低效R代码:读、写、执行、分享及维护都更简单轻松。《高效R语言编程》不可能给出如何写出这样代码的所有答案,但它肯定提供了一些思想、实例代码和技巧来帮助你的编程之旅有一个良好开端。

排版约定
高效R语言编程》使用下述排版约定。

斜体(Italic)
表示新术语、URL、电子邮件地址、文件名和文件扩展名。
黑体(Bold)表示R包名。
等宽字体(Constantwidth)表示程序清单,以及在段落中应用的代码片段,例如变量、函数名、数据库、数据类型、环境变量、语句和关键字。
等宽粗体(Constantwidthbold)表示命令或需用户输入的文本内容。
等宽斜体(Constantwidthitalic)表示需要用户提供的值或由上下文决定的值来替代的文本内容。
使用示例代码
补充材料(代码示例、图片等)可从以下网址下载:https://github.com/csgillespie/efficient。
高效R语言编程》的目的是帮助你完成工作。通常,你可以在你的程序和文档中使用《高效R语言编程》的代码。除非你要复制大量代码,否则你无需为许可联系我们。例如,使用《高效R语言编程》中的多个代码片段编写程序就无需获得许可。但以CD-ROM形式分发或销售O’Reilly书中的代码就需要我们的许可。回答问题时引用《高效R语言编程》以及代码例程无需许可。在你自己的项目文档使用了大量的示例代码则需要获得许可。
我们不强制要求署名,但如果这样做,我们深表感谢。署名格式一般包括书名、作者、出版社和ISBN号,例如:“EfficientRProgrammingbyColinGillespieandRobinLovelace(O’Reilly).Copyright2017ColinGillespie,
RobinLovelace,978-1-491-95078-4”。
如果你觉得你的代码示例超出正常使用范围或者上述许可范围,请通过
permissions@oreilly.com联系我们。
O’ReillySafari
Safari(以前的SafariBooksOnline)是一个针对企业、政府、教育工作者以及个人的会员制培训和参考平台。
订阅者可以访问来自超过250个出版社的大量书籍、培训视频、学习路径、交互式教程,以及精选的播放列表,这些出版社包括O’ReillyMedia、HarvardBusinessReview、PrenticeHallProfessional、Addison-WesleyProfessional、MicrosoftPress、Sams、Que、PeachpitPress、Adobe、FocalPress、CiscoPress、JohnWiley&Sons、Syngress、MorganKaufmann、IBMRedbooks、Packt、AdobePress、FTPress、Apress、Manning、NewRiders、McGraw-Hill、Jones&Bartlett等。
更多信息请访问http://orieilly.com/safari。
如何联系我们
有关《高效R语言编程》的建议和疑问请联系出版社:
美国:
O’ReillyMedia,Inc.
1005GravensteinHighwayNorthSebastopol,CA95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)奥莱利技术咨询(北京)有限公司
这《高效R语言编程》有专属网页,你可以在那里找到《高效R语言编程》的勘误、示例和其他信息,请访问:http://bit.ly/efficient-r-programming。
对《高效R语言编程》做出评论或者咨询技术问题,发送Email至bookquestions@oreilly.com。
需要了解更多关于我们书籍、课程、大会和新闻信息,请访问我们的官方网站:http://www.oreilly.com。
在Facebook上查看我们:http://facebook.com/oreilly在Twitter上关注我们:http://twitter.com/oreillymedia
在YouTube上查看我们:http://www.youtube.com/oreillymedia
致谢
我在开放平台上编写了这《高效R语言编程》,很多人帮我修正了多个小问题。特别感谢O’Reilly的《高效R语言编程》工作人员,以及每个通过GitHub的帮助者:@Delvis、
@richelbilderbeek、@adamryczkowski、@CSJCampbell、@tktan、@nachti,ConorLawless、@timcdlucas,DirkEddelbuettel、@wolfganglederer、
@HenrikBengtsson、@giocomai和@daattali。感谢提出详细意见的技术审核人员:RichardConton和GarrettGrolemund。
Colin
感谢Esther、Nathan和Niamh,谢谢你们的耐心。
Robin
感谢我在CornerstoneHousingCooperative的室友容忍我写书时的邋遢,感谢Leeds大学中支持我从事非常规的期刊文章和学术会议的学术工作的每个人。感谢由开源代码的开发者、用户、传播者构成的社区的每个人,他们使这一切成为可能。


其他推荐