基本信息
- 作者: [美] 哈德利·威克汉姆(Hadley Wickham)
- 丛书名: 数据科学与工程技术丛书
- 出版社:机械工业出版社
- ISBN:9787111663034
- 上架时间:2020-8-14
- 出版日期:2020 年8月
- 开本:16开
- 页码:389
- 版次:1-1
- 所属分类:计算机 > 软件与程序设计 > 综合 > 高级程序语言设计

内容简介
目录
前言
第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
前言
增加我在第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章将所有主题融合在一起,以展示如何从一种(编程)语言转换为另一种语言。
媒体评论
对象与其名称之间的区别,以及理解这种区别的重要性。
重要的向量数据结构,如何对它们进行组合,以及如何使用子集选取将它们分开。
函数和环境的细节。
可以报告消息、警告和错误等信息的条件系统。
强大的函数式编程范式,可以代替许多for循环。
三个重要的面向对象系统:S3、S4和R6。
用于元编程的tidy工具包,使你可以操纵代码并控制评估。
无论代码如何运行,都可以有效部署的调试技术。
如何查找和消除性能的瓶颈。
第2版的更新如下:
第一部分增加三章新的内容:名字和取值、控制流、条件。
全面介绍面向对象编程,涵盖S3、R6、S4,以及如何在它们中进行选择。
更深入地介绍元编程,包括新的tidy评估框架。
使用新的添加包,如rlang(http://rlang.r-lib.org)和purrr(http://purrr.tidyverse.org/)进行函数式编程。添加包rlang为低级操作提供了简洁的接口。