R:数据科学导论(2019)

围绕 R 在数据科学中的角色,评论者意见分歧:一方认为它是一门老旧而古怪的语言,另一方则认为它在探索性数据分析、统计建模和高质量可视化方面无可替代。评论中将 R 以 tidyverse 为中心的生态、可复现报告工具(R Markdown/Quarto)以及强大的领域包(如生物信息学、计量经济学、贝叶斯统计)与 Python 更适合大规模生产系统、Web 应用和现代 ML 框架进行对比。包管理、融入流水线以及长期维护成为两种语言共同的主要痛点,许多团队会根据既有基础设施、招聘现实,以及他们更看重快速交互式分析还是稳健的软件工程来做选择。

R 擅长的使用场景

  • 适合探索性数据分析(EDA)、快速绘图,以及对表格数据进行“像思考一样快”的迭代。
  • 在传统统计和贝叶斯统计、GLM/GAM、分层模型以及 Stan 集成方面很强。
  • 广泛用于生物信息学、遗传学、制药行业的 PK/PD、计量经济学、GIS,以及部分量化金融和交易工作流。
  • 往往是那些主要产出静态分析和报告、而非长期运行服务的团队中的主力工具。

R vs Python(以及 Julia)

  • 许多用户转向 Python,是为了流水线集成、Web 应用、招聘以及通用开发。
  • 也有人反馈,在 R 中进行数据整理和建模的生产率更高,然后只在生产环境或基于 autograd 的模型上才迁移到 Python。
  • Python 的 pandas 常被形容为比 dplyr/tidyverse 更笨拙;一些 Python 用户更喜欢 polars 或 ggplot 风格的仿制品。
  • 有些人认为 Julia 可能是 R 的潜在继任者,但目前仍过于小众,而且缺乏 R 那样的包深度。

Tidyverse、ggplot2 和 EDA

  • Tidyverse 一再被提及为 R 的关键优势:简洁、可读、管道式的数据操作,以及一致的模型接口。
  • ggplot2(及其概念上的仿制品)被认为在可视化质量和表现力上无可匹敌。
  • R 被认为尤其适合作为 REPL/交互式环境,尤其是在 IDE 支持下。

生产、流水线与 Web

  • 体验褒贬不一:有些组织完全用 R 运行大型、业务关键的流水线和应用;另一些则发现集成很痛苦,最终标准化到 Python。
  • 争议点包括较弱的 Web 框架选择(没有 Django 的对应物)、棘手的错误/异常语义,以及“做了点什么”而不是大声失败。
  • Shiny 因仪表盘和迷你应用而受到称赞,但被认为不足以支撑完整规模的 Web 应用;R 还有其他 Web 框架,但较为小众。

包与环境管理

  • 分歧很大:有人觉得 CRAN 和相关工具极其可靠;也有人报告频繁损坏、版本锁定不佳,以及二进制构建问题。
  • renv、对 CRAN 做快照,以及包管理器等工具提高了可复现性,但仍无法完全解决边缘情况。
  • R 和 Python 的大型生态中都有很多陈旧或已被放弃的包。

语言设计与学习

  • R 被描述为强大但特立独行:以向量为先的语义、多种 apply 变体、factor 处理、32 位整数、NA/NULL 的怪癖。
  • 有些人认为它实际上是一个面向统计的 DSL;另一些人则认为它是一个有能力但设计古怪的通用语言。
  • 对易用性的评价从“对统计最直观”到“令人困惑的遗物,学习曲线几乎是垂直的”不等。