基本 R 语法
学习从零开始编写R脚本的基础技能,例如语法、变量和算术运算。
R 有六个主要组成部分:基础 R、R 控制台、CRAN、IDE、脚本和工作目录。本课程将重点介绍基础 R、R 控制台、脚本和 IDE。我们暂时不会使用 CRAN 的任何扩展功能,也不会设置工作目录——这些内容将在后续课程中详细讨论。
本课程中的任何 R 脚本都将遵循相同的基本结构:
- 接收一些数据
- 对数据进行处理并执行某些统计操作
- 以某种形式输出结果
将代码按这三个主要部分进行结构化,是 R 中数据科学编程的最佳实践。随着时间推移,我们会增加更多复杂性和子组件,但这一基本结构始终不变。
尽管如此,我们将从一个典型的“Hello, world!”示例开始,并逐步构建出一个基于数据的模型。
1# 获取输入并将其赋值给变量 2VAR_InputText <- "Hello, world!" 3 4# 打印变量的内容 5VAR_InputText
第 1 行 是一个赋值操作。它将值 “Hello, world!” 存入变量 VAR_InputText。注意,与某些其他编程语言不同,R 中没有声明数据类型。在 R 中,无需指定变量将包含何种类型的数据。
同时注意使用的运算符 <-,它是 R 中的赋值运算符之一。共有三种赋值运算符:
<-:表示向左赋值(箭头方向)。->:表示向右赋值(同样按箭头方向)。=:表示向左赋值。
这些运算符用于将值赋给变量。因此,赋值后,该变量就包含了这个值。在此例中,第一行执行后,变量 VAR_InputText 就包含了 “Hello, world!” 这个值。
请修改上方代码,尝试使用另外两个赋值运算符。它们的工作方式相同。但使用 -> 运算符时,需将值放在左边,变量名放在右边(信息流向与箭头一致)。
然而,随着学习深入,我们将几乎只使用 <- 运算符进行赋值。这种方向性是标准做法,也是我们在几乎所有 R 代码中看到的形式。虽然 -> 运算符使用方便,但它可能导致代码可读性下降。而 = 运算符通常保留用于函数参数传值,以保持代码风格的一致性。
第 2 行 是一个输出操作。语句 VAR_InputText(无其他修饰)等价于其他编程语言中的 print() 语句。要让 R 输出变量中的内容,只需输入变量名即可。R 会自动识别数据类型,并将内容正确打印到控制台。这一特性非常便捷,未来会非常有用。基础 R 提供了 print() 函数,但通常比直接写变量名更少使用。在上方代码窗口中,将 VAR_InputText 改为 print(VAR_InputText),结果完全相同。
第 1 行和第 4 行:上述代码示例中的第三个组成部分是开头带有 # 的行。在 R 中,# 用于开始注释。它允许我们用自然语言描述代码的功能。本课程的所有代码都会被详细注释,因此你会频繁看到 # 运算符。关于注释的最佳实践将在后续课程中讨论,但目前需要知道的是:注释存在且与实际可执行代码不同。
需要注意以下几点关于 R 中注释的事项:
- 注释对脚本的执行没有任何影响。可以写得任意长或任意多,但不会改变代码的运行结果。可以把注释看作仅供人类阅读的内容——计算机完全忽略它们。
- 注释可以单独成行,也可以与可执行代码在同一行,例如:
1# 获取输入并将其赋值给变量 2VAR_InputText <- "Hello, world!"
这与下面的形式同样有效:
1VAR_InputText <- "Hello, world!" # 获取输入并将其赋值给变量
在课程推进过程中,这两种注释形式都会使用。注释的主要目标是让代码尽可能易读,因此我们会采用最清晰的方式书写注释。
有些编程语言支持多行注释的特殊符号,但 R 不支持。如果一条注释跨越多行,必须每行都以 # 开头。
在上方代码窗口中尝试移动注释位置,测试两种形式,或添加更多注释、删除注释。注意这些更改不会影响代码的实际执行。
现在我们已经掌握了如何将值赋给变量以及输出变量内容的方法,接下来可以开始讨论如何操作这些数据。本课将从最基本的结构讲起。
我们最常见的操作是数学运算。通常会有多个变量存储不同的数值,并需要执行一些数学计算。例如,下面这段脚本:
1# 为输入变量赋值 2x <- 3 3y <- 2 4 5z <- x + y # 执行基本数学运算 6z # 输出结果 7 8z <- x * y # 执行基本数学运算 9z # 输出结果 10 11z <- x ^ y # 执行基本数学运算 12z # 输出结果 13 14z <- x %% y # 执行基本数学运算 15z # 输出结果
在此示例中,新增了几行代码,实现了不同的算术运算。例如:
- 第 6 行:
z将被赋予x和y两个输入变量相加的结果。
在基础 R 中,我们有以下几种算术运算符可用:
+:加法-:减法*:乘法/:除法^或**:幂运算(“……的……次方”)%%:取模运算符——返回第一个数除以第二个数的余数,例如3 %% 2等于 1%/%:整数除法运算符——返回除法的整数部分(即不带小数的商)
请在上方代码窗口中尝试这些运算符。
至此,我们已掌握 R 脚本的基础!从现在起,我们将逐步增加复杂度,但整体结构始终围绕三个核心环节:接收数据、处理数据、输出结果。每当遇到困难时,都可以回到这个起点,通过判断当前处于哪个阶段来理清思路。