新書推薦:
《
纯粹·古代中国的历史与制度
》
售價:NT$
286.0
《
生活来来往往 别等来日方长 新版(伍佰:“讲好了这一辈子,再度重相逢。”别等,别遗憾!珍惜当下才是最好的解药)
》
售價:NT$
265.0
《
一个英国军事顾问眼中的二战
》
售價:NT$
1265.0
《
就业、利息和货币通论(徐毓枬译本)(经济学名著译丛)
》
售價:NT$
306.0
《
瘦肝
》
售價:NT$
454.0
《
股票大作手回忆录
》
售價:NT$
254.0
《
秩序四千年:人类如何运用法律缔造文明
》
售價:NT$
704.0
《
民法典1000问
》
售價:NT$
454.0
|
編輯推薦: |
本书由R语言领军人物Hadley Wickham撰写,深入阐释R语言编程的核心技术、工具,并提供大量实用编程技巧,可以帮助你了解R语言底层的工作方式,提升R语言编程技能,有效解决实际工作中的各种R语言编程问题。
本书的主要内容分为五部分:第壹部分(第2~8章)详细介绍R语言基础知识,包括名字和取值、向量、子集选取、控制流、函数、环境、条件;第二部分(第9~11章)介绍函数式编程,包括泛函、函数工厂和函数运算符;第三部分(第12~16章)介绍面向对象编程,包括基础类型、S3、R6、S4,以及各系统之间的权衡;第四部分(第17~21章)介绍元编程技术,包括表达式、准引用、计算、翻译R代码等;第五部分(第22~25章)介绍R的高级技术,包括调试、衡量性能、改进性能、使用C++重写R代码。
本书展示了R的特别之处,为想深入学习、理解R语言的初学者奠定了基础。中级R程序员则可以通过本书更深入地学习解决各种问题的新策略。而其他语言的程序员可以通过本书细致地了解R语言并理解R语言的运行方式。
|
內容簡介: |
本书从R语言的基础知识入手,深入介绍了R函数式编程、R语言的面向对象特性、程序的调试、代码优化和性能调优。同时,本书也介绍了R语言如何与HTML和LaTex语言结合的技术,介绍了高性能计算以及C语言编程接口。
|
目錄:
|
译者序
前言
第1章 绪论1
1.1 为什么选择R语言1
1.2 本书的目标读者2
1.3 通过本书你可以学到什么3
1.4 通过本书你将不能学到什么3
1.5 元技术3
1.6 推荐阅读4
1.7 获取帮助4
1.8 致谢5
1.9 约定8
1.10 声明8
第一部分 基础知识
第2章 名字和取值12
2.1 本章简介12
2.2 绑定基础13
2.3 复制后修改15
2.4 对象大小19
2.5 原位修改20
2.6 解除绑定和垃圾回收23
2.7 小测验答案24
第3章 向量25
3.1 本章简介25
3.2 原子向量26
3.3 属性29
3.4 S3原子向量31
3.5 列表35
3.6 数据框和tibble37
3.7 NULL44
3.8 小测验答案44
第4章 子集选取46
4.1 本章简介46
4.2 选择多个元素47
4.3 选择一个元素52
4.4 子集选取与赋值54
4.5 应用55
4.6 小测验答案60
第5章 控制流61
5.1 本章简介61
5.2 选择61
5.3 循环65
5.4 小测验答案67
第6章 函数68
6.1 本章简介68
6.2 函数基础69
6.3 函数组合72
6.4 词法作用域73
6.5 惰性求值76
6.6 ...参数80
6.7 退出函数82
6.8 函数形式85
6.9 小测验答案91
第7章 环境92
7.1 本章简介92
7.2 环境基础93
7.3 环境递归98
7.4 特殊环境100
7.5 调用堆栈105
7.6 模拟数据结构107
7.7 小测验答案108
第8章 条件109
8.1 本章简介109
8.2 信号条件110
8.3 忽视条件114
8.4 处理条件115
8.5 自定义条件121
8.6 应用124
8.7 小测验答案129
第二部分 函数式编程
第9章 泛函133
9.1 本章简介133
9.2 第一个泛函:map134
9.3 purrr风格141
9.4 map变体142
9.5 reduce系列148
9.6 判断泛函152
9.7 基础泛函154
第10章 函数工厂156
10.1 本章简介156
10.2 工厂基础157
10.3 图形工厂161
10.4 统计工厂165
10.5 函数工厂+泛函169
第11章 函数运算符172
11.1 本章简介172
11.2 现有的函数运算符173
11.3 案例学习:生成你自己的
函数运算符177
第三部分 面向对象编程
第12章 基础类型185
12.1 本章简介185
12.2 基础对象与OO对象185
12.3 基础类型186
第13章 S3188
13.1 本章简介188
13.2 基础189
13.3 类191
13.4 泛型和方法196
13.5 对象风格198
13.6 继承199
13.7 分派细节203
第14章 R6207
14.1 本章简介207
14.2 类和方法208
14.3 控制访问212
14.4 引用语义214
14.5 为什么是R6217
第15章 S4218
15.1 本章简介218
15.2 基础219
15.3 类220
15.4 泛型和方法223
15.5 方法分派226
15.6 S4和S3229
第16章 权衡232
16.1 本章简介232
16.2 S4与S3232
16.3 R6与S3233
第四部分 元编程
第17章 元编程概述239
17.1 本章简介239
17.2 代码是数据240
17.3 代码是树241
17.4 代码能生成代码241
17.5 计算表达式242
17.6 使用函数进行自定义计算243
17.7 使用数据进行自定义计算244
17.8 quosure244
第18章 表达式246
18.1 本章简介246
18.2 抽象语法树247
18.3 表达式250
18.4 解析与语法254
18.5 使用递归函数遍历抽象语法树258
18.6 专用数据结构263
第19章 准引用266
19.1 本章简介266
19.2 动机267
19.3 引用269
19.4 取消引用272
19.5 非引用277
19.6 “...”279
19.7 案例学习283
19.8 历史287
第20章 计算288
20.1 本章简介288
20.2 计算基础289
20.3 quosure292
20.4 数据掩码295
20.5 使用tidy计算299
20.6 使用R基础包计算301
第21章 翻译R代码308
21.1 本章简介308
21.2 HTML309
21.3 LaTeX315
第五部分 高级技术
第22章 调试324
22.1 本章简介324
22.2 整体方法324
22.3 定位错误325
22.4 交互式调试器327
22.5 非交互式调试329
22.6 非错误故障331
第23章 衡量性能333
23.1 本章简介333
23.2 性能分析333
23.3 微测试337
第24章 改进性能340
24.1 本章简介340
24.2 组织代码341
24.3 检查现有解决方案342
24.4 尽可能少做342
24.5 向量化345
24.6 避免复制346
24.7 案例研究:t检验347
24.8 其他技巧349
第25章 使用C++重写R代码350
25.1 本章简介350
25.2 开始使用C++351
25.3 其他类357
25.4 缺失值358
25.5 标准模板库361
25.6 案例研究365
25.7 在添加包中应用Rcpp368
25.8 更多学习资源369
25.9 致谢370
参考文献371
索引374
|
內容試閱:
|
欢迎使用《高级R语言编程指南》的第2版。本版有三个主要目标:
增加我在第1版发布后才完全理解的重要概念。
减少已不太实用的主题,以及我认为确实令人兴奋但结果却不那么实用的主题。
使用更好的文本、更清晰的代码和更多的图表,使内容更易于理解。
如果你熟悉第1版,就会发现此前言介绍了主要的改动,以便你可以将重点放在新的领域上。如果你正在阅读本书的印刷版本,你会很快注意到一个变化:书中包含了100多个新图表。
本版中的另一个重大变化是使用了新的添加包,尤其是rlang(http:rlang.r-lib.org),它为低级数据结构和操作提供了干净的接口。第1版几乎完全使用了基础包的R函数,这给教学带来了挑战,因为许多函数是多年独立发展的,所以很难看到隐藏在函数名称和参数的偶然变化中的重要基础思想。我将继续在各节的脚注中以及需要的地方显示基本等价的内容。但是如果你希望在本书中看到这些想法的最纯粹的R基础包中的表示,我建议你阅读第1版。你可以在线访问http:adv-r.had.co.nz。
自第1版出版以来的5年中,R的基础没有改变,但是我对它们的理解确实有所改变。因此,本书第一部分总体结构大致保持不变,但是许多单独的章节已得到很大改进:
第2章是全新的一章,可帮助你了解对象和对象名字之间的区别。这有助于你更准确地预测R将在何时复制数据结构,并为理解函数式编程奠定重要基础。
第3章(第1版中称为“数据结构”)已被改写,着重于向量类型,例如整数、因子和数据框。它包含主要的S3向量的更多详细信息(例如日期和日期时间),讨论了tibble添加包提供的数据框变化[Müller and Wickham,2018],并总体上反映了我对向量数据类型的理解。
第4章现在通过[和[[的用途来对它们进行区分:[提取多个值,而[[提取单个值(以前,它们是通过“简化”或“保留”来表征的)。4.3节的“练习”帮助你了解如何在列表中使用[[,并引入新函数,这些函数为越界索引提供了更一致的行为。
第5章是全新的一章,介绍了之前被我遗忘了的重要工具,例如if语句和for循环。
第6章的顺序得到了改进,引入了管道符(%%)作为函数编写的第三种方式(6.3节),并且显著改善了函数形式的覆盖范围(6.8节)。
第7章对特殊环境进行重新组织(7.4节),并对调用堆栈的讨论进行改进(7.5节)。
第8章包含第1版的“异常和调试”中的内容,以及有关R条件系统如何工作的许多新内容。该章还介绍如何创建自定义条件类(8.5节)。
接下来的章节围绕R中三个最重要的编程范例—函数式编程、面向对象编程和元编程,进行重新组织。
现在,将函数式编程更清晰地分为三种主要技术:泛函(第9章)、函数工厂(第10章)和函数运算符(第11章)。本书专注于R在数据科学中的实际应用,并减少了一部分纯理论内容。
这些章节现在使用purrr添加包提供的函数[Henry and Wickham,2018a],这些函数使我可以将更多的精力放在基础思想上,而不是偶然的细节上。由于主要用途是解决基本函数中省略号(...)的问题,因此大大简化了第11章。
面向对象编程(OOP)现在构成了本书的主要部分,其中包括一些全新章节:基础类型(第12章)、S3(第13章)、R6(第14章)、S4(第15章)以及系统之间的权衡(第16章)。
这些章节重点介绍不同对象系统的工作方式,而不是如何有效地使用它们。这是很有必要的,因为许多技术细节未在其他地方进行描述,并且有效使用OOP需要一本完整的书来专门学习。
元编程(第1版中称为“语言计算”)描述“可使用代码生成代码”的工具套件。与第1版相比,该部分得到了很大的扩展,现在集中在“tidy计算”上,这是一套使元编程安全、有原则并且可供更多R程序员使用的思想和理论。第17章粗略地阐述各个部分如何组合在一起。第18章描述底层的数据结构。第19章涵盖引用和取消引用。第20章介绍在特定环境中对代码的求值。第21章将所有主题融合在一起,以展示如何从一种(编程)语言转换为另一种语言。
本书最后部分的各章汇总了一些编程技术:性能分析、衡量和改进以及Rcpp。这部分内容与第1版非常相似,尽管组织有所不同。在这些章节中,我进行了一些小小的更新,特别是使用了较新的添加包(microbenchmark改为bench,lineprof改为profvis),但是大部分内容是相同的。
虽然第2版主要新增了一些内容,但是也删除了5章:
词汇这一章已被删除,因为它总是有点奇怪。比起在书中单列一章,以词汇表的方式呈现更加有效。
样式这一章已替换为在线样式指南,网址为http:style.tidyverse.org。样式指南与新的styler添加包[Müller and Walthert,2018]配对使用,该添加包可以自动应用许多规则。
C语言这一章已移至https:github.comhadleyr-internals,随着时间的推移,该章将为编写与R数据结构一起使用的C代码提供指南。
内存这一章已被删除,许多材料已集成到第2章中,其余的则被认为技术性太强,理解起来并不那么重要。
删除了有关R语言的性能这一章,这章几乎没有提供可行的见解,并且随着R的变化已过时。
|
|