【R】Advanced R —— Welcome & Preface

Welcome

这是 “Advanced R” 第二版的网站,这本书属于查普曼与霍尔的R系列。该书主要面向希望提高其编程技能和对R语言的理解的R用户。它还对从其他编程语言转向R的程序员有帮助,因为它可以帮助您理解R的工作方式。

如果您正在寻找第一版,您可以在 http://adv-r.had.co.nz/ 找到它。

许可证

创作共用许可

整个作品在创作共用署名-非商业性使用-相同方式共享4.0国际许可协议下授权。

本书中包含的代码同时也可根据MIT许可证获得;这意味着您可以自由地在您自己的程序包中使用它,只要您引用了出处。

其他书籍

您可能还对以下书籍感兴趣:

  • 《Advanced R Solutions》,由Malte Grosser和Henning Bumann编写,提供了本书中练习的解答。

  • 《R for Data Science》,将R作为进行数据科学的工具引入,侧重于一套称为“tidyverse”的一致性包。

  • 《R Packages》,教您如何充分利用R的出色包系统。

前言

欢迎来到 《Advanced R》 第二版。在这个版本中,我有三个主要目标:

  • 加强对重要概念的覆盖,这些概念在第一版出版后我才完全理解。
  • 减少对时间证明不太有用的主题的覆盖,或者我认为非常令人兴奋但实际上并不太实用的主题。
  • 通过更好的文本、更清晰的代码和更多的图表,使文章内容更易理解。

如果你熟悉第一版,那么这个前言将描述主要的变化,这样你可以将阅读重点放在新领域上。如果你正在阅读印刷版的这本书,你会很快注意到一个很大的变化:《Advanced R》 现在是彩色的!这极大地改善了代码块的语法高亮显示,并使创建有用的图表变得更加容易。我充分利用了这一点,在整本书中包含了100多个新的图表。

这个版本中的另一个重大变化是使用了新的包,特别是rlang包,它为低级数据结构和操作提供了更简洁的接口。第一版几乎完全使用了基础R函数,这在教学上带来了一些挑战,因为许多函数在多年来独立发展,使得难以看到隐藏在函数名和参数名的变化中的重要基本思想。我继续在边栏、脚注和需要的地方展示基础R的等效方法,但如果你想看到本书中这些思想的最原始基础的R表达,我建议阅读第一版,你可以在http://adv-r.had.co.nz找到它。

R的基础在第一版以来的五年里并没有发生变化,但我的理解肯定有所不同。因此,“Foundations”(基础)的总体结构基本保持不变,但许多单独的章节得到了很大的改进:

  • 第2章,“Names and values”(名称和值),是一个全新的章节,帮助你理解对象(objects)与对象名称(names of objects)之间的区别。这有助于你更准确地预测R何时会复制数据结构,并为理解函数式编程打下了重要基础。

  • 第3章,“Vectors”(向量)(以前称为数据结构(data structures)),已经重写,重点关注向量类型,如整数(integers)、因子(factors)和数据框(data frames)。它包含更多关于重要的S3向量(如日期(dates)和日期时间(date-times))的细节,讨论了tibble包提供的数据框(data frame)变体,同时反映了我对向量数据类型理解上的提升。

  • 第4章,“Subsetting”(子集选择),现在通过它们的意图分为[[[[提取多个值,而 [[ 提取单个值(以前它们是以它们是否“简化”或“保留”为特征来区分)。第4.3节绘制了“train”图来帮助你理解 [[ 如何与列表(lists)一起使用,并介绍提供了更行为一致地处理超出边界的索引新函数(function)。

  • 第5章,“Control flow”(控制流),是一个新的章节:不知何故,我之前忘记了像 if 语句和 for 循环这样重要的工具!

  • 第6章,“Functions”(函数),在顺序上有所改进,引入了管道(%>%)作为组合函数(compose functions)的第三种方式(第6.3节),并在函数形式(function forms)的覆盖范围上有了很大的改进(第6.8节)。

  • 第7章,“Environments”(环境),重新组织了对特殊环境的处理(第7.4节),并在调用堆栈(call stack)的讨论上有了很大的改进(第7.5节)。

  • 第8章,“Conditions”(条件),包含了以前在“Exceptions and debugging”(异常和调试)中的内容,以及关于R的条件系统(condition system)如何工作的许多新内容。它还向你展示了如何创建自己的自定义条件类(custom condition classes)(第8.5节)。

在第I部分“Foundations”之后,各章节已经重新组织,围绕R中三个最重要的编程范式展开:函数式编程、面向对象编程和元编程。

  • 函数式编程现在更清晰地划分为三个主要技术:第9章“Functionals”(函数式)、第10章“Function factories”(函数工厂)和第11章“Function operators”(函数运算符)。我着重关注在数据科学中具有实际应用的思想,并减少了纯理论的内容。
    这些章节现在使用了 purrr 包提供的函数,这使我更专注于基本思想,而不是偶发性细节。这导致了函数运算符章节的大幅简化,因为主要用途之一是解决基本函数式中省略号(...)的问题。

  • 面向对象编程(OOP)现在构成了书中的一个主要部分,包括全新的关于基本类型(第12章)、S3(第13章)、S4(第15章)、R6(第14章)以及这些系统之间的权衡(第16章)的章节。
    这些章节侧重于不同对象系统的工作原理,而不是如何有效地使用它们。很不幸,但很必要,因为许多技术细节在其他地方没有得到描述,而高效OOP需要一本专门的书。

  • 元编程(以前称为“在语言上进行计算(computing on the language)”)描述了您可以使用的工具套件,以便用代码生成代码。与第一版相比,这部分内容已经大幅扩展,现在侧重于“tidy evaluation”,这是一组使元编程安全、有原则并且让更多R程序员容易理解的思想和理论。第17章“Big picture”(大局观)粗略地展示了所有组件如何配合;第18章“Expressions”(表达式)描述了基础的数据结构(underlying data structures);第19章“Quasiquotation”(准引用)涵盖了引用和去引用;第20章“Evaluation”(评估)解释了在特殊环境中对代码的评估;第21章“Translations”(翻译)将所有主题汇总,展示了如何从一种(编程)语言翻译到另一种的方法。

书的最后一部分汇总了有关编程技巧的章节:性能分析、性能测量和优化,以及Rcpp。这些内容与第一版非常相似,尽管组织结构有些不同。我对这些章节稍加改动,特别是使用了更新的包(microbenchmark -> bench,lineprof -> profvis),但大部分内容没变。

虽然第二版对现有内容有了很大的扩展,但也删除了五章:

  • 词汇章节已被删除,因为它一直有点奇怪,而且有更有效的方法来呈现词汇列表,而不是在书的章节中。

  • 风格章节已被替换为在线风格指南,http://style.tidyverse.org/。风格指南与新的styler包配对使用,可以自动应用许多规则。

  • C语言章节已移至https://github.com/hadley/r-internals,随着时间的推移,这将提供有关如何编写与R数据结构配合使用的C代码的指南。

  • 内存章节已被删除。其中的大部分内容已经整合到第2章中,其余部分感觉过于技术性,不是很重要。

  • 有关R作为一种语言性能的章节已被删除。它没有提供太多可操作的见解,并且随着R的变化已过时。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值