# R 语言

R 语言目前最突出的应用应该在数据科学（尤其是生物信息）领域。如果你将来打算从事该行业，或者目前就在这一专业就读，理解并熟练掌握 R 是必备的技能。R 语言在近几年 Tidyverse 诞生后迎来了又一次的发展，目前已经从 Python 手中夺回了一些过去的地位。目前来说在很多领域 R 仍是不可替代的，并且在 Tidyverse 和 data.table 等 R 包的出现后易用性已经胜于 Python，不仅在统计领域，在机器学习领域同样如此，只是用的人还不够多。此外，在这些新 R 包的加持下，R 的速度已经毫不逊色于 NumPy 和 Pandas。R 的发展是值得关注的，并且如今被赋予了更多可能性，不应将其视为一门过时的语言。

不过自然，Python 在数据科学以外的领域还是碾压 R，毕竟 R 本来就是统计语言，而 Python 搞统计只能算兼职。所以如果将来不会大量接触数据科学领域的工作，学 R 不如学 Python，毕竟 Python 泛用性强太多了。

在 2022 年的今天，通过 Hadley Wickham 的一系列 R 相关书籍完全足以完成 R 语言的从入门到精通全过程，并且 Hadley Wickham 的书以亲切与说人话而著名，阅读起来应当不存在任何障碍，甚至不需要任何编程基础。下面简单提及几本：

* **R 语言入门与实践**：中文版正文 180 页，英文原版出版于 2014 年，黑白印刷。内容简单，只包含了最基础的 R 语言，不包含任何 base R 绘图函数的使用。由于非常基础，即使已经过去多年这本书仍没有丝毫过时。任何人，包括没有任何编程经验的初学者也应当能通过本书在一周之内快速入门 R。（严格来说，这本书不是 Hadley Wickham 写的，但是与 Hadley Wickham 的写作风格很像，作者也和 Hadley 关系密切，可以无缝对接下面一本书的阅读）。翻译不错。
* **R 数据科学**：中文版正文 340 页，英文原版出版于 2017 年，全彩印刷。全彩印刷与 Hackley Wickham 的生动笔风加持使得本书的阅读体验非常愉快。本书介绍了在 Tidyverse 工作流下 R 的使用。读完上面那本应当可以立即阅读这本，并且这也是非常推荐的阅读顺序。翻译不错。
* **ggplot：数据分析与图形艺术（第 3 版）**：虽然我这边写的是中文标题，但这本书的第三版中文翻译其实还没出，建议移步[这里](https://link.zhihu.com/?target=https%3A//ggplot2-book.org/)阅读开源英文版。注意不要买现在市面上的第二版中译本，翻译烂到麻中麻，糟蹋了一本好书。据称这本书是 Hadley Wickham 拿自己的博士论文改编的，不知道是真是假。从原理上讲透了 ggplot2 的设计思路，非常棒。如果英文水平不错，可以直接当作上面那本 R 数据科学的进阶。
* **Advanced R**：一样没有中文翻译，移步[这里](https://adv-r.hadley.nz/)阅读开源英文版，本书一直在保持更新。和上面一本书一样，还是不建议购买老版本的中译本，翻译实在是不行，读中译本还不如不读。很有深度的一本书，可以视作 R 语言完全进阶。注意这本书偏重于 R 语言本身，而不是各种绘图、数据处理操作。也就是说这本书其实已经不适合大多数将 R 当作工具的数据科学家或统计学家了。说实话，如果你日常只是把 R 当作工具，完全没必要读这本书。书中主要讲了 R 函数式编程、元编程以及提高 R 效率（Rcpp 等）的方法。
* **R 包开发**：一本小薄书，和标题一样，讲的就是开发 R 包相关的知识。通俗易懂，跟着走很容易就能开发一个 R 包。不过还是和上面那本一样，对于大多数数据科学家与统计学家来说，应该也没什么必要去学习 R 包开发。
* **Mastering Shiny**：刚出的书，只有英文版。Shiny 是 R 语言中一个做数据交互（也就是 BI）的包，由 RStudio 官方团队开发，可以高效构建交互式 Web App。从某种意义上和 pyecharts 有点相似，不过要强大得多。和上面两本一样，一般的数据科学家和统计学家也用不着这个，如果你所在的公司需要做交互式报表倒是可以考虑一下用这个代替 Power BI 实现更复杂的功能。
* **R 数据可视化手册（第 2 版）**：中文版正文 358 页，英文原版出版于 2018 年，全彩印刷。ggplot2 权威手册，基本包含了一切作图的知识，可以充当工具书，要画什么图的时候翻翻。与前面几本不同的是这本不是 Hadley Wickham 写的，不过读着也很不错，主要还是当参考书看，没什么必要直接从头读到尾。翻译不错。
* **R 语言经典实例（第 2 版）**：中文版正文 505 页，英文原版出版于 2019 年，黑白印刷。很合适的 R 语言进阶书。这本书也是基于 Tidyverse 流的，也讲了 dplyr 和 ggplot2 的操作，可以在读完《R 数据科学》后当作进阶，很适合数据科学领域的从业者阅读。翻译一般。

个人建议的学习路径是先阅读《R 语言入门与实践》，然后阅读《R 数据科学》。如果感到需要进阶，则阅读《R 语言经典实例（第 2 版）》。如果希望深入了解 ggplot2，则可阅读《R 数据可视化手册（第 2 版）》或《ggplot：数据分析与图形艺术（第 3 版）》，随便读哪本都可以，英文好的话推荐读后面一本，毕竟 ggplot2 是 Hadley Wickham 自己开发的，读他自己写的书显然更好一点。至于剩下的几本书，需要的时候在读，一般是用不上的，而且大多数人可能一辈子也用不上。不过要是乐意，可以考虑读一读《Advanced R》了解一下 R 语言本身，虽然读这本书对工作帮助不一定大，但确实是很有意思的一件事。

上面几本书介绍的主要是 Tidyverse 流下的 R 开发流程，如果你希望了解一些其他方面的知识（例如 base R），可以参考下面几本书：

* **R 语言实战（第 2 版）**：中文版正文 556 页，英文原版出版于 2015 年，黑白印刷。很全面的一本的 R 入门书，注重实战，少公式推导。阅读很顺畅，不容易被劝退，但是如果你真是一点编程基础都没有，还是先找点其他入门资料看看吧。主要讲的是 base R，带了一点 ggplot2，但是没讲 dplyr 这种典型的 Tidyverse 流下的数据处理包。如果不考虑 Tidyverse 流，是非常推荐的 R 语言入门书，然而 Tidyverse 流已经几乎完全统一了 R，看这本不如直接从 Tidyverse 入门。不过不作入门书的话，当作参考补充 base R 的知识倒是挺不错。翻译一般。
