找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2693

积分

0

好友

381

主题
发表于 8 小时前 | 查看: 1| 回复: 0

“人生苦短,我用 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 后验分布图:

不同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 语言设计,建议阅读 John M. Chambers 的 《Software for Data Analysis: Programming with R》。Chambers 是 S 语言(R 的前身)的创造者之一,这本书从设计者的视角揭示了R语言的哲学和内部机制。(https://book.douban.com/subject/4166489/)

《Software for Data Analysis: Programming with R》书籍封面

  • 如果想了解 R 语言统计模型,建议阅读统计建模经典:John M. Chambers, Trevor J. Hastie 的《Statistical Models in S》这本书深入探讨了 S/R 语言中的统计模型框架,适合想要深入理解 R 统计建模系统的读者。(https://book.douban.com/subject/4765849/ )

《Statistical Models in S》书籍封面

  • 如果想更多理解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日),它陪伴了我很长一段时间)

《The S Language: A Programming Environment for Data Analysis and Graphics》书籍封面

6. 总结

在 AI 席卷一切的时代,尽管 Python 几乎成为一门可以包打天下的语言,但 R 语言在统计建模、数据可视化等方面仍有其独特优势。学习 R 语言,不仅仅是学习一门工具,更是拥抱一个由统计学家和数据科学家共同构建的丰富生态。AI 的核心不仅仅是编程,更重要的是概率与统计,实践上很重要的就是数据分析,学习和掌握 R 语言可以帮助我们建构与增强统计思维。

在一名成熟的数据科学的编程语言工具箱里,不应该只有一把锤子。我们应该尽量使用最好的工具完成任务,而不是只用自己会的工具。 如果想了解更多类似的技术思考与实践分享,欢迎来云栈社区交流探讨。




上一篇:iPhone 17e 下月发布,A19芯片下放但60Hz屏引争议
下一篇:通往ChatGPT:基于Transformer的关键技术演进与大模型训练方法
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-27 16:55 , Processed in 0.270205 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表