“人生苦短,我用 Python”,这句话在 AI 时代的程序员圈子里,几乎是很多人的信条。的确,从深度学习到数据分析,Python 的身影无处不在。TensorFlow、PyTorch、Scikit-learn、pandas… 强大的生态让 Python 几乎成为数据科学和人工智能的代名词。
那么,在这样的背景下,我们还需要学习 R 语言吗?那个诞生于上世纪,专为统计而生的编程语言。本文是我基于自己的观察对这个问题的一些思考,也将分享一些我认为优秀的学习资源。
1. 编程语言的“专家”与“杂家”
尽管很多现在的数据科学家或算法工程师基本只使用 Python 语言(我称之为“专家”派),但我自认为是编程语言学习和使用者中典型的“杂家”。
在我的简历上,我这样介绍自己:“能自由运用 C、C++、Java、AWK、Bash、Perl、Python、R 语言编程,热衷于编写简单、可靠、易维护的代码”。
从最初学习 Fortran,到用谭浩强《C语言程序设计》自学 C 语言,再到后来用 JSP 开发网站,在南极中山站啃《C++编程思想》和《Java编程思想》。做数据科学后,我其实曾经最偏爱的语言是 Perl,直到有一天,一位年轻同事笑着对我说:“这似乎暴露了您的年龄”。于是我在公开场合一般用 Python,私下做数据分析时可能还是会偷偷用Perl,至于绘图——我几乎总是用 R 语言。
我的态度很明确:使用每种语言之长,而非强行用一种语言包打天下。 我用 Python/Perl 处理数据,用 R 绘图,用 Java 写 MapReduce,用 Scala 写 Spark 程序。尽管我知道也有同事会使用 Python 语言完成所有这一切。我的理由是:几乎每一种语言都有其不可替代的强大之处,而且熟悉多个语言会帮助人保持思维的灵活性。比如,在 Linux/Unix 环境中的格式化数据的处理中,我甚至仍会使用一种古老的语言 AWK 来处理一些简单事务。我的使用标准很简单,就是:哪种语言的代码少用哪种。
2. 为什么我喜欢 R 语言?
一句话回答是:R 是专为数据分析和绘图而生的编程语言,因此数据科学的工具箱里永远有 R 语言的一席之地。
我的基本看法是:数据分析与统计学在数据科学中至关重要,而 R 语言可以说是数据分析的天选之子。R 语言非常适合处理大小能装进内存的格式化数据,而且绘图非常方便。更大规模的数据或者非格式数据,我还是建议使用 Python 或其他编程语言。而在绘图方面,尽管 Python 语言已经很强大,但其实还是没有 R 语言使用方便,且所绘制出的图形往往更美观。
比如,以下是我用 R 语言(几乎是一行代码)绘制的不同 ADX 平台的 pCTR 后验分布图:

而以下是用 Python 语言做出的价格分布的结果(使用了更多代码):

3. pandas DataFrame 的由来
不熟悉 R 语言的读者可能不太清楚的是:如今 Python 数据科学的基石之一——pandas 的 DataFrame 概念,直接源自 R 语言的 data.frame。
2008 年,Wes McKinney 在 AQR Capital Management 工作时深感不便:Python 缺乏类似 R data.frame 的数据结构。于是他创造了 pandas,旨在在 Python 中实现 R 的数据操作体验和表达能力。而 R 语言的 data.frame 诞生于 1990 年代,继承自更早的 S/S-PLUS 语言。它的核心特征包括:二维表格结构、列可存储不同类型数据、每列等长、支持行列标签以及内置丰富的统计函数。这一数据结构成为统计计算的核心。
当然,pandas 的 DataFrame 并非简单复制,而是基于相同理念的重新设计,并针对 Python 生态进行了创新扩展。这个历史细节揭示了数据科学生态的有趣现象:优秀的概念会跨越语言边界,并在新的土壤中生根发芽。
4. 《R数据科学》简介与推荐
如果读者决定探索 R 语言的最新世界,我强烈推荐《R for Data Science, Second Edition》(中文版《R 数据科学(第 2 版)》)这本书。这本书不仅仅教我们 R 语言,而是教我们如何用 R 进行数据科学的完整工作流。它基于 tidyverse 生态系统——一套设计一致、易于学习的数据科学工具集。
tidyverse 的核心是 tidy data 理念:每个变量一列、每个观察一行、每个值一个单元格。这种结构化的数据组织方式,让后续的分析、可视化和建模变得异常流畅。书中涵盖了数据导入、整理、转换、可视化和建模的全过程。特别值得一提的是,它强调“可视化 - 建模 - 再可视化”的迭代循环,这正是数据科学实践的本质。学习这本书,你会发现自己不仅仅是在学习一门语言,而是在吸收一套经过深思熟虑的数据科学方法论。
5. 其他 R 语言图书推荐
当然,如果要学习 R 语言的最基础知识,《R数据科学》未必是最佳选择,如果是想学习 R 语言最基础知识,个人比较推荐《The Art of R Programming》(https://book.douban.com/subject/6727873/)。
中文版《R语言编程艺术》(https://book.douban.com/subject/24699632/)。这本书适合有编程背景的读者,从编程艺术的角度深入讲解R 语言的核心机制和高效编程技巧。
其他更深入的书籍有:


- 如果想更多理解R语言的历史与传承,建议阅读《The New S Language: A Programming Environment for Data Analysis and Graphics》(Richard A Becker,John M. Chambers, Allan R. Wilks著)这本经典著作虽然是关于 S 语言的,但它奠定了 R 语言的许多基础理念,阅读它有助于理解 R 语言的设计根源。本书中的代码在 R 语言环境中也基本都可以运行。(顺便提一下,我当年是托美国同事带回这本书的(2014年1月8日),它陪伴了我很长一段时间)

6. 总结
在 AI 席卷一切的时代,尽管 Python 几乎成为一门可以包打天下的语言,但 R 语言在统计建模、数据可视化等方面仍有其独特优势。学习 R 语言,不仅仅是学习一门工具,更是拥抱一个由统计学家和数据科学家共同构建的丰富生态。AI 的核心不仅仅是编程,更重要的是概率与统计,实践上很重要的就是数据分析,学习和掌握 R 语言可以帮助我们建构与增强统计思维。
在一名成熟的数据科学的编程语言工具箱里,不应该只有一把锤子。我们应该尽量使用最好的工具完成任务,而不是只用自己会的工具。 如果想了解更多类似的技术思考与实践分享,欢迎来云栈社区交流探讨。