R 是什么?
R 是一门为一项工作而生的编程语言:处理数据。统计、数据分析和数据可视化并不是靠库外挂到 R 上的功能,它们就是这门语言本身。均值、模型、图表和概率分布都是开箱即用的,语法也是围绕数据从业者真正会问的问题设计的:“这里有一列数字,告诉我它的一些情况。”
这种专注就是 R 的全部个性。像 Java 这样的通用语言要求你从基本元素一步步搭建。R 则直接用一行代码给你一个 t 检验。
下面就是 R 在做它天生擅长的事,运行看看:
三个统计量,三行代码,不需要任何导入。c() 构建一个由值组成的向量,mean()、sd() 和 max() 都是语言内置的。这就是 R 体验的缩影。
简史
R 起源于 S,一门在 20 世纪 70 年代由贝尔实验室开发的统计语言。90 年代中期,奥克兰大学的两位统计学家 Ross Ihaka 和 Robert Gentleman 用免费开源的方式实现了 S 的思想,并将其命名为 R,既取自两人名字的首字母,也呼应了它的前身 S。
R 1.0 于 2000 年发布,此后一直由 R 核心团队(R Core Team)维护。由于 R 是免费的,而它的商业前辈不是,R 首先在大学和研究实验室中流行开来,这种学术基因至今仍很明显:统计学家发明了新方法后,实现它的 R 包往往是最先出现的。
R 用来做什么
- 统计与数据分析。核心用途。描述统计、假设检验、回归、时间序列,都是一等公民。
- 数据可视化。基础 R 一个函数调用就能画图,而
ggplot2包被普遍认为是所有语言中最好的绘图库。 - 数据科学。“tidyverse”系列包(
dplyr、tidyr、readr)让清洗和重塑杂乱的数据变得格外轻松。 - 生物信息学。Bioconductor 项目提供了数千个用于基因组学的 R 包,让 R 成为生物学许多领域的默认语言。
- 学术与科研。经济学、心理学、流行病学、生态学:只要一个领域发表的论文里有 p 值,那里的研究生多半在写 R。
- 报告。R Markdown 和 Quarto 能把分析代码变成精美的报告、幻灯片和仪表板。
大家为什么喜欢 R
一切都是向量。R 的运算天然作用于整组值:prices * 1.2 把每个价格都提高 20%,不需要循环。一旦理解了这一点,数据代码会大大变短。学到向量时,你会发现它无处不在。
统计功能是内置的。随机数生成、概率分布、统计检验和线性模型都在基础 R 中。在大多数语言里这些都是第三方依赖;在 R 中,它们本来就在那里。
CRAN。CRAN(Comprehensive R Archive Network,R 综合典藏网)收录了 20,000 多个经过审核的包,每一个在发布前都要通过自动检查。无论你所在领域用的是多么小众的方法,都已经有人把它打包好了。
尊重你时间的绘图。hist(scores) 就能给你一张直方图,只需一次调用。探索性分析(看数据、调整、再看)正是 R 最擅长的事。
R 和 Python:实话实说
这是每个初学者都会问的问题,下面给出不带门户之见的答案。
Python 是一门很擅长处理数据的通用语言。当数据工作只是更大系统的一部分时,它更胜一筹,比如 Web 应用、生产环境的机器学习流水线、自动化脚本。与它相关的工作岗位更多,一门语言能覆盖更多领域。
R 是一门擅长统计的数据语言。当工作本身就是分析时,它更胜一筹:探索数据集、拟合统计模型、制作可用于发表的图表和报告。它的统计生态更深厚,最前沿的方法也往往最先出现在 R 中。
两者没有哪个“更好”,它们只是侧重点不同。如果你从事科研、生物统计或以分析为主的岗位,就从 R 开始。如果你的目标是带点数据色彩的软件工程,就从 Python 开始。网上争论常常略过的一个秘密是:学会第一门语言后,第二门只需花一小部分精力,很多从业者在同一周里两者都会用到。
现在就试试
开始学习不需要安装任何东西,这些页面上的代码块都可以直接运行。下面再来尝一点稍大的:模拟掷骰子并汇总结果。
sample() 模拟掷 100 次骰子,table() 统计每一面出现的次数,一次调用就得到一张频数表。把 100 改成 10000 再运行一次,平均值会逐渐接近 3.5,正如概率论所说的那样。这种“提问、写代码、得到答案、再调整”的循环,就是用 R 工作的感觉。
当你准备在自己的电脑上运行 R 时,下一步就是安装 R 和 RStudio。
本节要点
- R 是一门免费开源的语言,专为统计、数据分析和可视化而设计。
- 它源自 S,由 Ross Ihaka 和 Robert Gentleman 在 90 年代中期创建;R 1.0 于 2000 年发布。
- 它的优势:向量化运算、内置统计功能、CRAN 上的 20,000 多个包,以及一流的绘图能力。
- R 和 Python 之争并不是一场战争:R 在统计上更深入,Python 在工程上更广泛,很多人两者都用。
下一节:在你自己的电脑上安装 R(和 RStudio)。
常见问题
R 语言用来做什么?
R 用于统计、数据分析和数据可视化。它在学术研究、生物统计和生物信息学、流行病学,以及任何以“分析这个数据集,做出图表和模型”为工作内容的领域都占据主导地位。它较少用于开发应用或网站,那不是它的设计初衷。
R 语言难学吗?
对数据工作来说,R 是最容易上手的语言之一。加载数据集、计算汇总统计量、画一张图,每件事都只需要一行代码。后来让人犯难的是 R 的灵活性:同一件事有好几种做法,所以尽早学习现代惯例会很有回报。
该学 R 还是 Python?
如果你的工作以统计为主(科研、生物统计、计量经济学、报告),R 能让你更快走得更远。如果你想要一门通用语言,既能做数据,又能写脚本、做 Web 后端或机器学习工程,就选 Python。很多数据从业者最终两者都用,概念是相通的。
R 是免费的吗?
是的。R 是免费的开源软件,以 GPL 许可证发布。你可以从 CRAN 免费下载,CRAN 上的数千个包也都是免费的。