R 语言:从基础到进阶
R 语言:从基础到进阶
1. 为什么需要学习R
SPSS、Jamovi 不香么?为什么还要花时间去学一门新的编程语言?
理由:R 在业界和学界都有广泛的运用,对于未来打算从事任何与数据的分析和处理有关的岗位, 学习和掌握 R 都是一个不错的选择,可以成为你的武器库中的一把趁手的兵器。
学术用途示例:
业界示例,数据分析师岗位:
- 字节跳动
- 腾讯
学界示例,科研助理招聘、研究员:
- 科研助理
- 保研/直博
- 研究员(亚马逊 research scientist)
- 实习生
2. 学习内容与方法
2.1 学习内容
教学内容分为两大块,基础和进阶。基础部分介绍 R 语言的基本要素和语法结构,进阶部分学习如何运用基础部分学到的知识完成不同领域中复杂但通用的任务类型。详细课程内容见目录。
2.2 学习方法
2.2.1 学习编程就像学习一门新语言
例如以下语句:
exam_1st <- read.table(file = "exam_1st.txt") # 读取第 1 次考试的数据
exam_2nd <- read.table(file = "exam_2nd.txt") # 读取第 2 次考试的数据
rank_1st <- order(exam_1st$scores, decreasing = TRUE) # 第 1 次考试的成绩降序排列
rank_2nd <- order(exam_2nd$scores, decreasing = TRUE) # 第 2 次考试的成绩降序排列
rank_change <- rank_2nd - rank_1st # 计算排名变化
stu_improved <- exam_1st$ID[rank_change > 0] # 找出排名变化为正的同学
stu_retrogressed <- exam_1st$ID[rank_change < 0] # 找出排名变化为负的同学
stu_improvement_largest_three <- exam_1st$ID[order(
rank_change,
decreasing = TRUE
)][1:3] # 找出排名变化最大的三位同学
看起来很复杂对不对,但其实就是一个很简单的目标任务:现有一个班前后两次考试的数据,现在需要依次找出进步的同学、退步的同学和进步最大的三位同学。这件任务如果不借助 R ,而是通过手动的方式来完成,相信每一位同学都会做,因为任务可以很清晰地分解以下几个步骤:
- 拿到两次考试的数据,里面应该包括学生的身份识别信息(学号、姓名等)和成绩;
- 分别将两次考试中学生的成绩由高到低排序;
- 将第二次考试中每一位同学的排名减去 Ta 在第一次考试中的排名,获得排名变化;
- 将排名变化是正数和负数的同学分别找出来,分别代表进步和退步的同学;
- 将排名变化最大的前三位找出来。
而只要懂得 R 的基本语法,就能够很轻松地写出上面这些代码。
学习英语相信大家都有经验,学习 R 的过程本质上就是记忆知识点+阅读理解+任务分解+翻译,和学英语其实是十分类似的。每一句 R 代码就好比一个基本结构只有谓语和宾语的句子,句子的意思都是“操作了 object(s),给操作产生的结果 object 起了个名字叫做 xxx”。
- 记忆知识点(输入):体现在要能够记住诸如操作( <- 、 - 、 $ 、 [] )、函数( read.table() order() )等基本知识点;
- 阅读理解(输入):体现在要能在储备了一定基本知识点的基础上,能够开始学习一些相对更复杂的代码,读懂每一句代码代表的意思,究竟是操作了什么 object,有什么样的结果,为自己写代码打下基础;
- 任务分解:体现在要能在前两点的基础上,面临一个新的目标任务(如上面的例子),要能够把任务分解为清晰的步骤;
- 翻译(输出):把分解好的每一步骤翻译成 R 代码。
2.2.2 基本学习路径
- 理解 R 代码的基本结构 x <- value,以及该基本结构的结果,对象(object);
- 掌握 name 和 value 的基本知识,特别是 value 的元素类型和结构类型;
- 掌握与 object 互动的方法(取子集,操作,使用函数,控制流等等);
- 将需要完成的目标任务分解成清晰的步骤,然后用前 3 点中学到的知识将这些步骤翻译成 R 代码即可。
最后,实现给 R 提供一些信息(输入 object),使用 R 处理这些信息(与输入的 object 交互),然后给出想要的结果(输出处理完毕的 object),完成目标任务。
2.3 成绩评定
- 课堂表现:20%
- 课程作业:30%
- 期末考核:50%
总成绩 = 课堂表现 + 课程作业 + 考试
课程作业都发布在头歌(Educoder.com)上,请自行注册账号并加入指定班级。
3. R 语言简介
R 是一种用于统计计算和图形的语言和环境。它是 GNU 项目的一部分,类似于贝尔实验室(原 AT&T,现 Lucent Technologies)的 John Chambers 及其同事开发的 S 语言和环境。当前的 R 是一个协作项目的成果,来自世界各地的贡献者。R 最初由 Auckland 大学统计系的 Robert Gentleman 和 Ross Ihaka 编写,也被称为“R & R”。自 1997 年中期以来,有一个核心团队,即 R 核心团队,拥有对 R 源代码的写入权限。
R 提供了广泛的统计(线性和非线性建模、经典统计检验、时间序列分析、分类、聚类等)和图形技术,并且高度可扩展。
节选自:
- R 语言官网: About R
- R 语言官网: Contributors
更多有关 R 的前世今生参见:R : Past and Future History
R 包含:
- 用于数组计算(特别是矩阵)的运算符套件,
- 用于数据分析的大型、连贯、集成的中间工具集(回归、因子分析等),
- 用于数据可视化和显示的图形设施(无论是屏幕显示还是硬拷贝),以及
- 一种简单而有效的编程语言,包括条件语句、循环、用户定义的递归函数和输入输出设施。
R,像 S 一样,是围绕真正的计算机语言设计的,它允许用户通过定义新函数来添加额外的功能。对于计算密集型任务,C、C++(Rcpp)和 Fortran 代码可以在运行时链接和调用(适用于高级用户)。
许多用户认为 R 是一个统计系统。我们更倾向于将其视为一个环境,在其中实现统计技术。R 可以通过包轻松扩展。R 分发附带了大约八个包,通过 CRAN 网站家族提供了更多(18095)的现代统计方法。
节选自 R 语言官网: About R
4. 安装指南
4.1 安装 R
- 下载 R,打开 CRAN 官网CRAN
- 切换至中国境内的镜像(mirrors),如清华大学
- 双击打开下载的安装包
注意事项:
- 安装目录中不要有中文:在R中使用中文可能存在的问题。
- 不要安装在 C 盘:
4.2 安装 Rtools(可选)
当碰到诸如创建 R 包、下载一些尚处在开发阶段的 R 包等情况时,会要求使用者的电脑安装了 Rtools。
- 下载和系统位数(32 或 64)匹配的Rtools
tips:如何确定电脑是 32 位还是 64 位?
桌面->此电脑->右键->属性
- 双击打开下载的安装包
4.3 安装 Rstudio
为什么要用 Rstudio?集成开发环境(integrated developing environment, IDE)。Rstudio 集成了很多便利的设定和功能,能够获得更好的 R 语言编程体验。好比都是做截图这同样的一件事(R 语言编程),windows 自带的截图工具(R 自带的图形界面编辑器:RGui)就是没有 QQ 截图(Rstudio)好用。
当然还有其他的泛文本编辑器,如 Visual Studio Code, Visual Studio, Atom, Eclipse, 等等,都可以作为 R 的编辑器,但最常用的、最好上手的是还是 Rstudio。
- 下载Rstudio desktop
- 双击打开下载的安装包
Rstudio 有 4 个主要和常用的版块如下图所示,各板块的具体用法将在Rstudio简介这一节详细介绍。
如果要更改各版块的位置和版块内呈现的具体内容,使用 Rstudio 的顶部菜单中的”View”,具体为:View->Panes->Pane Layout
4.3.1 推荐设置
Rstudio 的所有设置都在顶部菜单”Tools”中,具体为:Tools->Global Options
延伸阅读:Customizing Rstudio
5. 一些实用技巧
- 将 R 的显示语言调整为英语,并设置为启动配置。具体方式如下:
- 在确保 R 关闭的情况下,找到 R 的安装路径下的etc文件夹,一般是”盘符:\Program Files\R\R-版本号\etc\”
- 找到”Rprofile.site”文件,右键->打开方式->记事本
- 在末尾添加 Sys.setenv(LANG = "en"),保存并关闭
- 如果发现采取了上述步骤以后依旧是中文,将末尾添加的代码改为 Sys.setenv(LANG = "en_US")。
- 设定一个专门存放 R 代码的文件夹(不要放在 C 盘),并设置 Rstudio 启动时自动定位到该目录。
- 在桌面新建一个 Rstudio 快捷方式,如果已经有了则跳过此步
- 复制专门存放 R 代码的文件夹路径
- 在该快捷方式上右键->属性->起始位置->粘贴复制的路径到引号内
- 在该快捷方式上右键->固定到任务栏
6. 作业
- 下载和安装 R 和 Rstudio;
- 按照推荐设置配置 Rstudio;
- 调整 R 的显示语言为英语。