新书速递
导读:尽管R语言有很多令人沮丧的奇怪之处,但是R从本质上来说是一款十分适合数据科学的优雅而美丽的语言。
1
为什么选择R语言
如果刚刚接触R语言,你可能会问这门奇怪的语言有什么值得学习的。对于我来说,R语言最好的特性有下面几条:
R语言是免费、开源、跨平台的。所以如果使用R语言进行数据分析,每个人都可以很容易地复制它(重现分析过程),无论他们生活在哪里或赚多少钱。
R语言拥有一个多元化且热情的社区,既有在线社区(例如#rstats twitter社区,https://twitter.com/search?q=%23rstats),也有面对面社区(例如许多R语言用户的聚会,https://www.meetup.com/topics/r-programming-language/)。有两个特别鼓舞人心的社区团体:rweekly时事通讯(https://rweekly.org),可以方便地获取R最新的消息;R-Ladies(http://r-ladies.org),为妇女和其他少数族裔性别提供了一个非常受欢迎的社区。
大量可以用于统计建模、机器学习、可视化、数据导入与操作的添加包(package)可以供R使用。可能别人都已经做好了你正在尝试构建的任何模型或者图形,即使不能完全照搬,你也能从他们的工作中学到很多经验,从而对你的工作起到帮助作用。
交流结果的强大工具。RMarkdown(https://rmarkdown.rstudio.com)可以非常容易地将结果输出成HTML、PDF、Word、PowerPoint演示文稿、dashboard等报告。Shiny(http://shiny.rstudio.com)可以帮你制作精美的交互式应用程序,而无须任何HTML或JavaScript知识。
RStudio是一种集成开发环境(http://www.rstudio.com/ide/),专门针对数据科学、交互式数据分析和统计编程的需求而设计。
前沿的工具。统计学和机器学习领域的研究者在发表研究论文时,经常会同时发布一个相应的R添加包。这就意味着你可以马上获得最新的统计技术并可以迅速实施。
对数据分析根深蒂固的支持。这包括很多特性,比如缺失值、数据框和向量化等。
强大的函数式编程基础。函数式编程的思想非常适合应对数据科学的挑战。R语言是函数式编程,并且提供了有效函数式编程所需的许多原语。
RStudio公司(https://www.rstudio.com)通过向R用户团队销售专业产品来盈利,然后转身将其中的大部分资金投资到开源社区(RStudio有超过50%的软件工程师从事开源项目)。我之所以为RStudio工作,是因为我从根本上相信它的使命。
强大的元编程(metaprogramming)工具。R语言的元编程功能可以让你写出简洁而神奇的函数,并为设计特定领域的语言(domain-specific language)(例如ggplot2、dplyr、data.table等)提供了出色的环境。
可以与高性能编程语言(如C、Fortran和C++)连接。
当然R语言也不是完美的。R语言最大的挑战和机遇就是大多数用户都不是程序员。这就意味着:
所看到的很多R代码都是在急于解决某个紧迫问题的情况下编写的。因此这些代码并不是非常简洁、高效或者易于理解。大多数用户不会修改他们的代码来克服这些缺点。
与其他编程语言相比,R社区更注重结果而非过程。软件工程最佳实践的知识不够完整。例如,使用源代码控制或自动化测试的R程序员还不够多。
元编程是一把双刃剑。有太多的R函数通过使用一些技巧来减少代码的输入量,由此造成的结果就是使代码变得很难理解,有些还会以意想不到的方式失败。
不同作者贡献的各种R添加包之间经常会出现矛盾,甚至与R的基础包发生冲突。每次使用R语言时,都要面对它超过25年的进化史。由于需要记住很多特例,所以R语言的学习会比较困难。
R并不是速度很快的编程语言,尤其是写得很差的R代码运行起来会非常慢。R还非常耗费内存。
从个人角度来看,我觉得这些挑战也为有经验的程序员创造了一个极大的机会,让他们可以对R语言和R社区产生深远而有益的影响。R用户确实应该写出高质量的代码,尤其是在进行可重复研究时,但是他们现在还不具有这样的能力。我希望本书不仅可以帮助更多的R用户成为R程序员,还非常鼓励正在使用其他语言的程序员对R语言做出贡献。
2
本书的目标读者
本书是针对两个互补的群体:
要从本书获得最大收益,你需要编写大量的R语言或者其他语言的代码。你应该熟悉数据分析的基础知识(即数据的导入、操作和可视化),并且已经编写许多函数,同时熟悉CRAN软件包的安装和使用。
本书介于参考书(主要用于查找)与线性可读的书之间。这涉及一些权衡,因为在使材料保持一致的同时很难线性化材料,如果你已经熟悉特定的技术词汇,则更容易解释一些概念。本书尝试使用脚注和交叉引用来确保即使在你只阅读其中一章时仍然可以理解里面的内容。
3
通过本书你可以学到什么
我认为本书描述的这些技能都是高级R程序员应该掌握的:对基础知识的深刻理解以及广泛的词汇表,意味着你可以根据需要学习更多相关主题的知识。
读完本书之后,你将掌握以下内容:
熟悉R的基础。你将理解复杂的数据类型和对它们进行运算的最佳方法。你将对函数如何工作、环境以及如何使用条件系统有深刻的了解。
理解什么是函数式编程,以及为什么函数式编程是数据分析的有用工具。你将能快速地学习如何使用现有工具,以及如何在需要的时候创建函数。
了解R丰富的面向对象系统。你将最熟悉S3,但同时也将了解S4和R6,知道在需要时可以在何处查找更多信息。
欣赏元编程这把双刃剑。你将能在遵守原则的前提下使用tidy运算(tidy evalua-tion)来创建函数,从而减少代码的输入量并创建优雅的代码来表达重要的运算,还将理解元编程的危险并知道何时避免它。
对于R中什么样的操作会很慢且耗费内存能够产生很好的直觉。你将知道如何使用分析来找到阻碍性能提高的瓶颈,还会学到足够多的C++知识,将很慢的R函数转换成非常快的C++程序。
4
第2版更新内容
首部分增加三章新的内容:名字和取值、控制流、条件。
全面介绍面向对象编程,涵盖S3、R6、S4,以及如何在它们中进行选择。
更深入地介绍元编程,包括新的tidy评估框架。
使用新的添加包,如rlang(http://rlang.r-lib.org)和purrr(http.//purrr.tidyverse.org/)进行函数式编程。添加包rlang为低级操作提供了简洁的接口。
5
作者简介
哈德利·威克汉姆(Hadley Wickham),RStudio首席科学家,斯坦福大学和奥克兰大学的兼职教授,并且是R基金会的成员。他是R添加包tidyverse(包含ggplot2和dplyr)的主要开发人员,这些R包旨在支持数据科学。他还是R for Data Science(与Garrett Grolemund 台著)、R Packages和ggplot2:Elegant Graphics for Data Analysis的作者。2019年,他获得了考普斯总统奖——国际统计学领域的奖项。
6
目录
第1章 绪论 1.1 为什么选择R语言 1.2 本书的目标读者 1.3 通过本书你可以学到什么 1.4 通过本书你将不能学到什么 1.5 元技术 1.6 推荐阅读 1.7 获取帮助 1.8 致谢 1.9 约定 1.10 声明
第一部分 基础知识 第2章 名字和取值 2.1 本章简介 2.2 绑定基础 2.3 复制后修改 2.4 对象大小 2.5 原位修改 2.6 解除绑定和垃圾回收 2.7 小测验答案 第3章 向量 3.1 本章简介 3.2 原子向量 3.3 属性 3.4 S3原子向量 3.5 列表 3.6 数据框和tibble 3.7 NULL 3.8 小测验答案 第4章 子集选取 4.1 本章简介 4.2 选择多个元素 4.3 选择一个元素 4.4 子集选取与赋值 4.5 应用 4.6 小测验答案 第5章 控制流 5.1 本章简介 5.2 选择 5.3 循环 5.4 小测验答案 第6章 函数 6.1 本章简介 6.2 函数基础 6.3 函数组合 6.4 词法作用域 6.5 惰性求值 6.6 参数 6.7 退出函数 6.8 函数形式 6.9 小测验答案 第7章 环境 7.1 本章简介 7.2 环境基础 7.3 环境递归 7.4 特殊环境 7.5 调用堆栈 7.6 模拟数据结构 7.7 小测验答案 第8章 条件 8.1 本章简介 8.2 信号条件 8.3 忽视条件 8.4 处理条件 8.5 自定义条件 8.6 应用 8.7 小测验答案
第二部分 函数式编程 第9章 泛函 9.1 本章简介 9.2 第一个泛函:map() 9.3 purrr风格 9.4 map变体 9.5 reduce系列 9.6 判断泛函 9.7 基础泛函 第10章 函数工厂 10.1 本章简介 10.2 工厂基础 10.3 图形工厂 10.4 统计工厂 10.5 函数工厂+泛函 第11章 函数运算符 11.1 本章简介 11.2 现有的函数运算符 11.3 案例学习:生成你自己的函数运算符
第三部分 面向对象编程 第12章 基础类型 12.1 本章简介 12.2 基础对象与OO对象 12.3 基础类型 第13章 S3 13.1 本章简介 13.2 基础 13.3 类 13.4 泛型和方法 13.5 对象风格 13.6 继承 13.7 分派细节 第14章 R6 14.1 本章简介 14.2 类和方法 14.3 控制访问 14.4 引用语义 14.5 为什么是R6 第15章 S4 15.1 本章简介 15.2 基础 15.3 类 15.4 泛型和方法 15.5 方法分派 15.6 S4和S3 第16章 权衡 16.1 本章简介 16.2 S4与S3 16.3 R6与S3 ……
第四部分 元编程 第五部分 高级技术
上下滑动查看
点击链接了解详情并购买
更多精彩回顾
书讯 |9月书讯(下)| 开学季,读新书
书讯 |9月书讯(上)| 开学季,读新书
资讯 |TIOBE 9 月编程语言:C++ 突起、Java 流行度下降
上新 | 一本书带你吃透Nginx应用与运维 书单 | 开学季——计算机专业学生必读的10本畅销经典
干货 | 用户画像从0到100的构建思路
收藏 | 更新!更薄!更精华:《JavaScript编程精解》来了
视频 | 4min视频带你了解阿里B2B电商算法
赠书 |【第20期】实践深度学习?先接住这三板斧再说
点击阅读全文购买
|
请发表评论