
一、 基础操作与概念
1. 赋值与输出
在R语言中,最标准的赋值符号是左箭头 <-。虽然等号 = 也可以使用,但在R社区中 <- 是更为推荐的代码规范。
r
# 1. 赋值
x <- 10 # 将10赋值给变量x (推荐)
y = 20 # 使用等号赋值 (合法但不推荐)
30 -> z # 右箭头赋值 (较少使用)
# 2. 输出
print(x) # 使用print()函数输出
x # 直接输入变量名按回车即可输出
cat("x的值是:", x, "\n") # cat()用于拼接字符串和变量输出,\n为换行符
2. 注释
R语言只支持单行注释,使用 # 符号。如果需要多行注释,需要在每一行前面加上 #。
r
# 这是一个单行注释
x <- 5 # 这也是注释
二、 基本数据类型 (Data Types)
R语言中常用的基本数据类型有五种。可以使用 class() 或 typeof() 函数来查看变量的数据类型。
- Numeric (数值型):默认的数字类型,包含小数。
- Integer (整型) :表示整数,需要在数字后加字母
L声明。 - Character (字符型) :文本字符串,用双引号
""或单引号''括起来。 - Logical (逻辑型) :布尔值,只有
TRUE(或T) 和FALSE(或F)。 - Complex (复数型):包含实部和虚部。
r
num <- 10.5 # class: numeric
int <- 10L # class: integer
chr <- "Hello R" # class: character
logi <- TRUE # class: logical
comp <- 3 + 2i # class: complex
# 类型转换函数
as.numeric("123") # 字符转数值
as.character(123) # 数值转字符
as.logical(1) # 数值转逻辑值 (0为FALSE,非0为TRUE)
三、 运算符
1. 算术运算符
+(加),-(减),*(乘),/(除)^或**(指数/求幂)%%(求余数/模)%/%(整除)
r
10 %% 3 # 返回 1 (10除以3的余数)
10 %/% 3 # 返回 3 (10除以3的整数部分)
2. 关系运算符
返回值均为逻辑型 (TRUE 或 FALSE)。
>,<,>=,<=,==(等于),!=(不等于)
3. 逻辑运算符
&(元素级逻辑与):用于向量,逐个元素比较。&&(标量逻辑与):只比较向量的第一个元素,常用于if语句。|(元素级逻辑或)。||(标量逻辑或)。!(逻辑非/取反)。
四、 核心数据结构
这是R语言最核心的部分,主要分为六大数据结构。R语言的索引从 1 开始,而不是 0。
1. 向量 (Vector)
一维数组,只能包含同一种 数据类型。使用 c() 函数(concatenate)创建。
r
# 创建向量
vec_num <- c(1, 2, 3, 4, 5)
vec_chr <- c("A", "B", "C")
vec_seq <- 1:10 # 快速生成1到10的整数序列
vec_seq2 <- seq(1, 10, by=2) # 生成1, 3, 5, 7, 9
# 向量索引
vec_num[1] # 提取第1个元素,返回 1
vec_num[c(1, 3)] # 提取第1和第3个元素
vec_num[-1] # 提取除了第1个元素之外的所有元素
# 向量化运算 (R语言的强项)
vec_num * 2 # 所有元素均乘以2,返回 2, 4, 6, 8, 10
2. 矩阵 (Matrix)
二维数组,只能包含同一种数据类型。
r
# 创建一个 2行 3列 的矩阵,按列填充 (默认)
mat <- matrix(1:6, nrow = 2, ncol = 3)
# 创建矩阵,按行填充
mat_byrow <- matrix(1:6, nrow = 2, ncol = 3, byrow = TRUE)
# 矩阵索引 mat[行, 列]
mat[1, 2] # 提取第1行,第2列的元素
mat[1, ] # 提取整个第1行
mat[, 2] # 提取整个第2列
3. 数组 (Array)
多维数据结构,只能包含同一种数据类型。
r
# 创建一个 2×3×2 的三维数组
arr <- array(1:12, dim = c(2, 3, 2))
arr[1, 2, 1] # 提取第1维度的第1行第2列
4. 列表 (List)
一维集合,可以包含不同类型的数据(甚至可以包含向量、矩阵、函数或其他列表)。
r
# 创建列表
my_list <- list(name = "Tom", age = 25, scores = c(90, 85, 88))
# 列表索引
my_list[1] # 返回一个子列表 (class仍为list)
my_list[[1]] # 返回列表第一个元素本身的值 ("Tom")
my_list$name # 使用 $ 符号通过名称提取元素 (最常用)
5. 数据框 (Data Frame)
二维表格数据,类似于Excel表格。每一列可以是不同的数据类型,但每一列的长度必须相同。这是R中处理数据的最常用结构。
r
# 创建数据框
df <- data.frame(
ID = c(1, 2, 3),
Name = c("Alice", "Bob", "Charlie"),
Passed = c(TRUE, FALSE, TRUE)
)
# 数据框提取
df$Name # 提取Name列 (返回向量)
df[1, ] # 提取第1行所有数据
df[, "Passed"] # 提取Passed列
df[df$ID > 1, ] # 条件筛选:提取ID大于1的行
6. 因子 (Factor)
用于存储分类数据(Categorical data),分为名义型(无序)和有序型。
r
# 创建因子
gender <- factor(c("Male", "Female", "Male", "Female"))
levels(gender) # 查看因子的水平 (类别): "Female" "Male"
# 有序因子
sizes <- factor(c("Small", "Large", "Medium"),
levels = c("Small", "Medium", "Large"),
ordered = TRUE)
五、 控制流语句 (Control Flow)
1. 条件判断 (if...else)
r
x <- 10
if (x > 0) {
print("正数")
} else if (x < 0) {
print("负数")
} else {
print("零")
}
**向量化条件函数:ifelse()**
非常适合对整个向量进行快速条件判断。
r
# ifelse(条件, 满足条件时的返回值, 不满足时的返回值)
scores <- c(55, 75, 90)
results <- ifelse(scores >= 60, "Pass", "Fail")
# 返回: "Fail" "Pass" "Pass"
2. 循环语句 (Loops)
for 循环 (最常用)
r
for (i in 1:5) {
print(i^2)
}
while 循环
r
count <- 1
while (count <= 3) {
print(count)
count <- count + 1
}
控制循环的关键字
break:立即跳出整个循环。next:跳过当前这一轮循环的剩余代码,直接进入下一轮 (相当于其他语言的continue)。
六、 函数 (Functions)
除了R语言自带的丰富函数,用户也可以自定义函数。使用 function 关键字定义。
r
# 定义一个计算圆面积的函数
calculate_area <- function(radius) {
if (radius < 0) {
return("半径不能为负数") # 使用 return() 显式返回值
}
area <- pi * radius^2
area # 如果没有 return(),函数会自动返回最后一行表达式的结果
}
# 调用函数
calculate_area(5)
设置默认参数:
r
power <- function(base, exp = 2) { # exp 默认为 2
return(base^exp)
}
power(3) # 返回 9
power(3, 3) # 返回 27
七、 常用内置基础函数速查
-
数学统计:
-
sum(x),mean(x),median(x),sd(x),var(x): 求和、均值、中位数、标准差、方差。 -
max(x),min(x),range(x): 最大值、最小值、范围。 -
abs(x),round(x, digits=2): 绝对值、保留两位小数。 -
数据属性查看:
-
length(x): 向量/列表的长度。 -
dim(x): 矩阵/数据框的维度 (行数和列数)。 -
nrow(x),ncol(x): 行数、列数。 -
str(x): 查看数据对象的内部结构 (非常实用)。 -
summary(x): 输出对象的统计摘要。 -
其他工具:
-
is.na(x): 判断数据中是否存在缺失值 (NA)。 -
na.omit(x): 移除含有缺失值的行。 -
help(函数名)或?函数名: 查看某个函数的官方帮助文档。