跳转至

Topic 2.1 - R 语言简介

1. R 语言的基本介绍

R 语言是一种专门为统计建模与数据分析而设计的编程语言,和其他编程语言(如 Python)相比,R 具有以下优势:

  • R 自带丰富的统计与数据分析的功能,例如:

    • 数据操作与分析
    • 数据可视化
    • 统计建模
  • R 对非程序员更友好,其语法通常更直观,上手简单,适合数据分析任务,但是依然保有着编程语言的特点,因此,学会 R 之后再学习其他编程语言也会更容易

  • R 拥有一个庞大且活跃的社区,不仅有大量的免费资源可已使用,而且还可以获得社区的支持和帮助
  • R 是开源且免费的,这使得它对广泛的用户群体都可访问

使用 R(或编程语言)相比于点选式软件(如 Excel 或 SPSS)的优势包括:

  1. 清晰记录操作步骤:

    • 在 Excel 中,软件展示给我们的表格其实是结果,而不是过程。我们无法清晰地看到每一步操作是如何进行的
    • 使用代码进行数据分析,每一步操作都会被记录下来,因为操作记录就是代码本身
  2. 避免隐性错误:

    • 在 Excel 中,一个错误的单元格引用可能会悄悄地破坏整个分析,而且还不容易被发现
    • 在 R 中,错误更容易被发现,也更容易修复,因为一旦代码有错,程序就会报错,提示你哪里出了问题
  3. 可重复和可更新:

    • 在 Excel 中,如果你需要用新数据重新运行相同的分析,你可能需要手动重复每一步
    • 使用代码进行数据分析,代码就是过程的记录,你只需要运行相同的代码,就可以得到新的结果
  4. 适合团队协作:

    • 在 Excel 中,尽管也可以共享文件,但是大家对文件的修改都是基于覆盖别人数据的方式,很难追踪每个人的修改历史,也不方便多人同时编辑
    • 使用基于代码的工具,版本控制系统(如 Git)可以帮助团队更好地协作,追踪每个人的修改历史,并且支持多人同时编辑同一个项目

2. R 语言的发展历史

R 语言的历史可以追溯到上世纪90年代,当时 Ross Ihaka 和 Robert Gentleman 在新西兰奥克兰大学开发了 R 语言:

  • 1980年代末:Ross Ihaka 与 Robert Gentleman 在新西兰奥克兰大学任教,因教学需要,萌生了开发新语言的想法
  • 1991年:R 语言开始开发,由奥克兰大学统计系的 Ross Ihaka(左)与 Robert Gentleman(右)共同创建;名字"R"来自两人名字的首字母
  • 1993年:R 的第一个二进制版本在 StatLib 上公开发布
  • 1995年:R 以 GPL 开源协议正式发布,任何人可免费使用和修改
  • 1997年:R 核心开发团队正式成立,CRAN(R 包存储库)创建
  • 2000年:R 1.0.0 正式发布
  • 2004年:R 2.0.0 发布
  • 2007年:R 语言数据可视化包 ggplot2 发布,极大提升了 R 的数据可视化能力
  • 2009年:RStudio IDE 由 RStudio 公司(盈利性公司,与 R 开发团队不是一个组织)发布,提供了一个用户友好的界面来编写和运行 R 代码
  • 2012年:R Markdown(.rmd)格式诞生,核心理念是将代码、结果与叙述文字融为一体
  • 2013年:R 3.0.0 发布,标志着 R 在大数据时代进入成熟阶段
  • 2014年:R 语言数据处理包:dplyrtidyr 发布,极大提升了 R 的数据处理能力
  • 2016年:R 语言数据处理与分析包:tidyverse 发布,集合了包括 ggplot2dplyrtidyr 等在内的多个包,形成了一个完整的数据分析生态系统
  • 2017年:CRAN 上的包数量突破 10,000 个
  • 2020年:R 4.0.0 发布;引入了新的字符串处理机制和更严格的类型检查等重要改进
  • 2022年:Quarto 文件 (.qmd) 格式由 Posit 公司(RStudio 公司改名之后的名字)发布,作为 R Markdown 的升级版,支持更多的编程语言和更强的文档生成能力

3. R 语言的应用领域

大家在学校学习 R 语言,基本上有两大情景:统计计量课与数据分析课:

  • 在统计计量课上,R 语言主要被用来进行统计建模和计量分析:

    • 常见的任务包括:置信区间估计、假设检验、回归分析等
    • 使用的包有:MASSAERsandwich
  • 在数据分析课上,R 语言主要被用来进行数据清洗、数据可视化和数据分析操作:

    • 常见的任务包括:数据清洗、数据转换、数据可视化等
    • 使用的包有:tidyversedplyrggplot2

这两种 R 语言的使用情景基本上有 90% 都是不同的:

  • 两种情景使用 R 语言,目的不同、使用的功能不同、代码的画风也不同
  • 因此这里我们先给同学们吃个定心丸,如果发现两种课上学的内容无法互通,不是你学的不好,而是两种课上学的内容本来就是不一样的