高级R语言编程指南
作者 : [美]哈德利·威克汉姆 (Hadley Wickham)著
译者 : 李洪成 段力辉 何占军 译
出版日期 : 2016-06-22
ISBN : 978-7-111-54067-0
定价 : 79.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 308
开本 : 16
原书名 : Advanced R
原出版社: Taylor & Francis -CRC Press
属性分类: 教材
包含CD :
绝版 :
编辑推荐

《高级R语言编程指南》由机械工业出版社出版。

图书简介

本书为解决各种R语言编程问题提供了非常有用的工具和技术,帮助你少走弯路。书中阐释了R语言简洁、优美以及灵活的核心特点,展示了许多必备的技巧,通过它们可以创建在各个场景中使用的优质代码。
本书主要内容
·R语言基础知识,包括标准数据类型和函数。
·将函数式编程作为有用的框架来解决多类问题。
·元编程的优点与缺点。
·编写快速及节省内存的程序。
本书展示了R的特别之处,为R软件使用者成为R程序员奠定了基础。中级R程序员则可以通过本书更深入地研究R语言,学习新策略来解决各种问题。而其他语言的程序员可以通过本书细致地了解R语言并理解R语言的运行方式。

图书特色

本书作者是R语言及相关领域的领军人物,为众多R语言社区的成员所熟知和欣赏。这就是本书最显著的优势。虽然越来越多的书籍在讨论本书讲述的主题,但是很少有相关书籍拥有同样的深度、技术上的准确性和权威性。
— Bill Venables, CSIRO

本书为解决各种R语言编程问题提供了非常有用的工具和技术,帮助你少走弯路。书中阐释了R语言简洁、优美以及灵活的核心特点,展示了许多必备的技巧,通过它们可以创建在各个场景中使用的优质代码。

本书主要内容
R语言基础知识,包括标准数据类型和函数。
将函数式编程作为有用的框架来解决多类问题。
元编程的优点与缺点。
编写快速及节省内存的程序。

本书展示了R的特别之处,为R软件使用者成为R程序员奠定了基础。中级R程序员则可以通过本书更深入地研究R语言,学习新策略来解决各种问题。而其他语言的程序员可以通过本书细致地了解R语言并理解R语言的运行方式。

作者简介
哈德利·威克汉姆 (Hadley Wickham) R语言及相关领域的领军人物,RStudio首席科学家,美国莱斯大学统计学助理教授。他拥有超过10年的R语言编程经验,致力于开发用于数据处理、分析、成像的工具。他已经开发了几十个高质量的R软件包,如ggplot、lubridate、plyr、reshape2、 stringr和 httr等。

上架指导

计算机\程序设计

封底文字

“本书作者是R语言及其相关领域的领军人物,为众多R语言社区的成员所熟知和欣赏。这就是本书最显著的优势。虽然越来越多的书籍在讨论本书讲述的主题,但是很少有相关书籍拥有同样的深度、技术上的准确性和权威性。”
----Bill Venables, CSIRO

本书为解决各种R语言编程问题提供了非常有用的工具和技术,帮助你少走弯路。书中阐释了R语言简洁、优美以及灵活的核心特点,展示了许多必备的技巧,通过它们可以创建在各个场景中使用的优质代码。
本书主要内容:
 R语言基础知识,包括标准数据类型和函数。
 将函数式编程作为有用的框架来解决多类问题。
 元编程的优点与缺点。
 编写快速及节省内存的程序。

本书展示了R的特别之处,为R软件使用者成为R程序员奠定了基础。中级R程序员则可以通过本书更深入地研究R语言,学习新策略来解决各种问题。而其他语言的程序员可以通过本书细致地了解R语言并理解R语言的运行方式。

作者简介

[美]哈德利·威克汉姆 (Hadley Wickham)著:哈德利·威克汉姆 (Hadley Wickham) R语言及相关领域的领军人物,RStudio首席科学家,美国莱斯大学统计学助理教授。他拥有超过10年的R语言编程经验,致力于开发用于数据处理、分析、成像的工具。他已经开发了几十个高质量的R软件包,如ggplot、lubridate、plyr、reshape2、 stringr和 httr等。

译者简介

李洪成 段力辉 何占军 译:暂无简介

译者序

随着大数据的概念变得越来越流行,对数据的探索、分析和预测将成为大数据分析领域的基本技能之一。作为探索和分析数据的基本工具,数据分析软件包是必不可少的。R软件作为功能强大且开源的数据分析工具,在数据分析领域获得了越来越多用户的青睐。目前,市场上出版了大量的与R语言有关的书籍,这些书籍基本可以分为两类:一类是通过R语言介绍某个主题或者课程;另一类是R软件或者R语言入门性质的介绍。目前尚没有一本深入而详细地介绍R语言与编程的书籍。本书恰好填补了这方面的空白。
本书从R语言的基础知识入手,深入介绍R函数式编程、R语言的面向对象特性、程序调试、代码优化和性能调优。同时,本书也介绍了R语言如何与HTML和LaTex语言相结合的技术,介绍了高性能计算以及C语言编程接口。
本书作者Hadley Wickham是R语言专家,他具有10年以上应用R语言的实践经验,他编写了许多高质量的R添加包,例如ggplot2、 plyr、reshape2 等,这些都是在R社区广泛使用的添加包。通过本书的学习,一方面可以更深入地了解R语言编程的核心知识,另一方面也可以在某种程度上了解这样一位众所周知的R语言专家所编写的R添加包。
本书共分4部分:R语言基础、函数式编程、R语言计算和R性能分析。第一部分详细介绍R的基础知识,包括数据结构、子集选取、常用函数与数据结构、编程风格指南、函数、面向对象编程、环境、程序调试和防御性编程;第二部分介绍函数式编程、泛函、函数运算符;第三部分介绍非标准求值、表达式、领域特定语言(HTML和LaTex);第四部分介绍R的性能、代码调优、内存管理、高性能计算和C语言编程接口。
本书是学习R语言难得的手册。不管是初学者还是具有一定编程经验的R用户,都可以从本书获益。初学者可以先从第一部分入手,然后根据需要逐步学习后面的部分。熟练的R用户可以从自己感兴趣的内容入手。
本书的翻译得到了国家自然科学基金 (项目编号71461005)和广西高校数据分析与计算重点实验室的资助。在本书的翻译过程中,得到了明永玲编辑的大力支持和帮助。本书责任编辑盛思源老师具有丰富的经验,为本书的出版付出了大量的劳动。这里对她们的支持和帮助表示衷心的感谢。本书的翻译工作主要由李洪成、段力辉共同完成,何占军和吴立明协助翻译了本书的部分内容。
由于时间和水平所限,难免会有不当之处,希望同行和读者多加指正。

推荐序

根据调查,R语言现在是高级分析、统计学、数据可视化和预测模型开发领域最流行的工具。在 Statistics.com在线课程中,R语言方面的课程都有大量的需求,这些课程包括本书作者Hadley Wickham开发的ggplot2、数据挖掘、统计模型、地图、空间分析和贝叶斯统计等。R语言流行的一个原因是,巨大的R社区贡献了数千个适用于各种应用的R添加包。
R在统计学家和数据挖掘人员中的流行,奠定了它在编程语言中的独特地位。最初,用户应用R进行统计模型拟合、数据可视化或者其他的统计任务。对这些用户而言,R是一个功能强大的、免费的、基于命令行的统计软件。至少,一开始他们可能不需要开发高效的、长度太大的复杂代码。这些用户随着应用R的范围变广、应用加深,把R作为一门编程语言来进行最佳实践的需求就变得迫切了。
本书是进一步学习R语言和进行标准编程实践一个很好的指南,它与应用R进行数据分析密切相关。该书系统地讲解了数据结构、子集选取、函数、泛函和面向对象编程。那些被R的速度慢而困扰的用户可能喜欢本书有关内存应用、代码优化和高性能计算部分的内容。
越多的R用户遵从本书开始几章列出的原则,在R社区中就会看到更多的高水平的R代码。

美国统计教育学院,Statistics.com在线课程网站总裁和创始人Peter Bruce

According to some surveys, R is now the most popular tool for advanced analytics, statistics, visualization and predictive model development. At Statistics.com, courses in R are in high demand, including the ggplot2 course that Hadley Wickham developed, as well as courses in data mining, statistical modeling, mapping, spatial analysis, Bayesian statistics, and more. One reason for this is the huge global R community, which has contributed thousands of R packages for all kinds of purposes.
R抯 popularity among statisticians and data miners has given it a unique position among programming languages. Most of its users originally came to R with a goal of fitting a statistical model, producing a visualization, or performing some other statistical task. For these users, R is essentially a powerful, free command-line statistical software program. They probably did not need to create code that was lengthy, complex, or especially fast, at least at first. With time, though, as the general use of R broadened and deepened, the need to treat R as a programming language, and observe “best practices,” grew.
This book provides a guide for these users who need to step back and learn the nitty-gritty of standard programming practices, as it they pertain to the use of R for data analysis. It provides a systematic treatment of data structures, notation, subsetting, functions, and functional and object-oriented programming. Those frustrated with R抯 slowness will like the sections on memory use, code optimization and high performance computing. The more R-users who follow the principles outlined in the coming chapters, the better the overall level of code we will see in the R community.

Peter Bruce
President and Founder
The Institute for Statistics Education at Statistics.com

图书目录

推荐序
译者序
第1章 简介1
1.1 本书的目标读者2
1.2 通过本书你可以学到什么2
1.3 元技术3
1.4 推荐阅读3
1.5 获取帮助4
1.6 致谢4
1.7 约定5
1.8 声明5
第一部分 基础知识
第2章 数据结构8
2.1 向量9
2.1.1 原子向量9
2.1.2 列表11
2.1.3 练习12
2.2 属性12
2.2.1 因子13
2.2.2 练习15
2.3 矩阵和数组15
2.4 数据框17
2.4.1 数据框构建17
2.4.2 类型判断与强制转换18
2.4.3 合并数据框18
2.4.4 特殊列19
2.4.5 练习19
2.5 答案19
第3章 子集选取21
3.1 数据类型22
3.1.1 原子向量22
3.1.2 列表23
3.1.3 矩阵和数组23
3.1.4 数据框24
3.1.5 S3对象25
3.1.6 S4对象25
3.1.7 练习25
3.2 子集选取运算符26
3.2.1 简化与保留26
3.2.2 $27
3.2.3 缺失/超出索引边界(越界引用)28
3.2.4 练习28
3.3 子集选取与赋值29
3.4 应用30
3.4.1 查询表(字符子集选取)30
3.4.2 人工比对与合并(整数子集选取)30
3.4.3 随机样本/自助法(整数子集选取) 31
3.4.4 排序(整数子集选取)31
3.4.5 展开重复记录(整数子集选取) 32
3.4.6 剔除数据框中某些列(字符子集选取) 33
3.4.7 根据条件选取行(逻辑子集选取) 33
3.4.8 布尔代数与集合(逻辑和整数子集选取) 34
3.4.9 练习35
3.5 答案35
第4章 常用函数与数据结构36
4.1 基础函数36
4.2 常见数据结构37
4.3 统计函数38
4.4 使用R39
4.5 I/O函数39
第5章 R编程风格指南40
5.1 符号和名字40
5.1.1 文件名40
5.1.2 对象名40
5.2 语法41
5.2.1 空格41
5.2.2 大括号42
5.2.3 行的长度42
5.2.4 缩进42
5.2.5 赋值43
5.3 结构43
第6章 函数44
6.1 函数组成部分45
6.1.1 原函数45
6.1.2 练习46
6.2 词法作用域46
6.2.1 名字屏蔽47
6.2.2 函数与变量48
6.2.3 重新开始48
6.2.4 动态查找49
6.2.5 练习50
6.3 每个运算都是一次函数调用50
6.4 函数参数51
6.4.1 函数调用52
6.4.2 使用参数列表来调用函数53
6.4.3 默认参数和缺失参数53
6.4.4 惰性求值54
6.4.5 ...参数56
6.4.6 练习57
6.5 特殊调用57
6.5.1 中缀函数57
6.5.2 替换函数58
6.5.3 练习59
6.6 返回值59
6.6.1 退出时61
6.6.2 练习62
6.7 答案62
第7章 面向对象编程指南64
7.1 基础类型65
7.2 S366
7.2.1 认识对象、泛型函数和方法66
7.2.2 定义类和创建对象67
7.2.3 创建新方法和泛型函数69
7.2.4 方法分派69
7.2.5 练习71
7.3 S471
7.3.1 识别对象、泛型函数和方法72
7.3.2 定义类并创建对象73
7.3.3 创建新方法和泛型函数74
7.3.4 方法分派74
7.3.5 练习75
7.4 RC75
7.4.1 定义类和创建对象75
7.4.2 识别类和方法77
7.4.3 方法分派77
7.4.4 练习77
7.5 选择一个系统77
7.6 答案78
第8章 环境79
8.1 环境基础79
8.2 环境递归83
8.3 函数环境85
8.3.1 封闭环境85
8.3.2 绑定环境86
8.3.3 执行环境87
8.3.4 调用环境88
8.3.5 练习90
8.4 绑定名字和数值90
8.5 显式环境92
8.5.1 避免复制93
8.5.2 软件包状态93
8.5.3 模拟hashmap93
8.6 答案94
第9章 调试、条件处理和防御性编程95
9.1 调试技巧96
9.2 调试工具97
9.2.1 确定调用顺序98
9.2.2 查看错误99
9.2.3 查看任意代码100
9.2.4 调用栈:traceback()、where和recover()100
9.2.5 其他类型的故障101
9.3 条件处理102
9.3.1 使用try来忽略错误102
9.3.2 使用tryCatch()处理条件103
9.3.3 withCallingHandlers()105
9.3.4 自定义信号类106
9.3.5 练习107
9.4 防御性编程107
9.5 答案109
第二部分 函数式编程
第10章 函数式编程112
10.1 动机112
10.2 匿名函数116
10.3 闭包117
10.3.1 函数工厂119
10.3.2 可变状态119
10.3.3 练习120
10.4 函数列表120
10.4.1 将函数列表移到全局环境中122
10.4.2 练习123
10.5 案例研究:数值积分124
第11章 泛函127
11.1 第一个泛函:lapply()128
11.1.1 循环模式129
11.1.2 练习130
11.2 for循环泛函:lapply()的相似函数131
11.2.1 向量输出:sapply和vapply131
11.2.2 多重输入:Map(和mapply)133
11.2.3 滚动计算134
11.2.4 并行化135
11.2.5 练习136
11.3 操作矩阵和数据框137
11.3.1 矩阵和数组运算137
11.3.2 组应用138
11.3.3 plyr添加包139
11.3.4 练习140
11.4 列表操作140
11.4.1 Reduce()140
11.4.2 判断泛函141
11.4.3 练习141
11.5 数学泛函142
11.6 应该保留的循环143
11.6.1 原位修改143
11.6.2 递归关系144
11.6.3 while循环144
11.7 创建一个函数系列145
第12章 函数运算符149
12.1 行为函数运算符150
12.1.1 缓存152
12.1.2 捕获函数调用153
12.1.3 惰性155
12.1.4 练习155
12.2 输出函数运算符156
12.2.1 简单修饰156
12.2.2 改变函数的输出157
12.2.3 练习158
12.3 输入函数运算符159
12.3.1 预填充函数参数:局部函数应用159
12.3.2 改变输入类型159
12.3.3 练习160
12.4 组合函数运算符161
12.4.1 函数复合161
12.4.2 逻辑判断和布尔代数163
12.4.3 练习163
第三部分 语言计算
第13章 非标准计算166
13.1 表达式获取167
13.2 在子集中进行非标准计算168
13.3 作用域问题171
13.4 从其他函数调用173
13.5 替换175
13.5.1 为替换提供应急方案177
13.5.2 捕获未计算的表达式177
13.5.3 练习178
13.6 非标准计算的缺点178
第14章 表达式180
14.1 表达式的结构180
14.2 名字183
14.3 调用184
14.3.1 修改调用185
14.3.2 根据调用的元素来创建调用186
14.3.3 练习186
14.4 捕获当前调用187
14.5 成对列表189
14.6 解析与逆解析191
14.7 使用递归函数遍历抽象语法树192
14.7.1 寻找F和T193
14.7.2 寻找通过赋值创建的所有变量194
14.7.3 修改调用树197
14.7.4 练习198
第15章 领域特定语言200
15.1 HTML200
15.1.1 目标201
15.1.2 转义202
15.1.3 基本标签函数203
15.1.4 标签函数204
15.1.5 处理所有标签205
15.1.6 练习206
15.2 LaTeX206
15.2.1 LaTeX 数学206
15.2.2 目标207
15.2.3 to_math207
15.2.4 已知符号207
15.2.5 未知符号208
15.2.6 已知函数209
15.2.7 未知函数210
15.2.8 练习211
第四部分 性能
第16章 性能214
16.1 R为什么速度慢214
16.2 微测试215
16.3 语言性能216
16.3.1 极端动态性216
16.3.2 可变环境下的名字搜索218
16.3.3 惰性求值开销219
16.3.4 练习219
16.4 实现的性能220
16.4.1 从数据框提取单一值220
16.4.2 ifelse()、pmin()和pmax()220
16.4.3 练习222
16.5 其他的R实现222
第17章 代码优化225
17.1 性能测试226
17.2 改进性能229
17.3 组织代码229
17.4 有人已经解决了这个问题吗230
17.5 尽可能少做231
17.6 向量化236
17.7 避免复制237
17.8 字节码编译238
17.9 案例研究:t检验238
17.10 并行化240
17.11 其他技术241
第18章 内存243
18.1 对象大小243
18.2 内存使用与垃圾回收246
18.3 使用lineprof对内存进行性能分析248
18.4 原地修改250
18.4.1 循环252
18.4.2 练习253
第19章 使用Rcpp编写高性能函数254
19.1 开始使用C++255
19.1.1 没有输入,标量输出256
19.1.2 标量输入,标量输出256
19.1.3 向量输入,标量输出257
19.1.4 向量输入,向量输出258
19.1.5 矩阵输入,向量输出258
19.1.6 使用sourceCpp259
19.1.7 练习260
19.2 属性和其他类261
19.2.1 列表和数据框262
19.2.2 函数262
19.2.3 其他类型263
19.3 缺失值263
19.3.1 标量263
19.3.2 字符串265
19.3.3 布尔型265
19.3.4 向量265
19.3.5 练习266
19.4 Rcpp 语法糖266
19.4.1 算术和逻辑运算符266
19.4.2 逻辑总结函数267
19.4.3 向量视图267
19.4.4 其他有用的函数267
19.5 STL268
19.5.1 使用迭代器268
19.5.2 算法269
19.5.3 数据结构270
19.5.4 向量270
19.5.5 集合271
19.5.6 图272
19.5.7 练习272
19.6 案例研究272
19.6.1 Gibbs采样器273
19.6.2 R向量化与C++向量化274
19.7 在添加包中应用Rcpp275
19.8 更多学习资源276
19.9 致谢277
第20章 R的C接口278
20.1 从R中调用C函数279
20.2 C数据结构280
20.3 创建和修改向量281
20.3.1 创建向量和垃圾回收281
20.3.2 缺失值和非有限值282
20.3.3 访问向量数据283
20.3.4 字符向量和列表284
20.3.5 修改输入284
20.3.6 强制转换标量285
20.3.7 长向量285
20.4 成对列表286
20.5 输入验证287
20.6 寻找一个函数的C源代码289
索引292                    

教学资源推荐
作者: 崔冬 黄骁
作者: 何宁 吴黎兵 滕冲
作者: 晓雨工作室
作者: 黄燕 吴平 等
参考读物推荐
作者: 杨晓华 孔令泉 等编著
作者: 乔建军 等编著
作者: 华为企业架构与变革管理部 著
作者: 黄佳