☰
R 基础运算:从算术到向量与矩阵的全面指南
2026/10/21 6:20:08 网站建设 项目流程

1. 引言

R 语言作为统计分析和数据科学领域的主流工具,其强大的运算能力是构建一切复杂分析的基础。无论是简单的加减乘除,还是涉及向量、矩阵的高阶运算,掌握 R 的基础运算规则都是每一位 R 使用者的必修课。本文将通过丰富的代码实例,系统讲解 R 中的算术运算、比较运算、逻辑运算,以及向量和矩阵的运算方法。

2. 算术运算

R 中的算术运算符与大多数编程语言类似,包括加、减、乘、除、幂和取余等。下面通过实例逐一演示。

# 基本算术运算 a <- 10 b <- 3 a + b # 加法,结果为 13 a - b # 减法,结果为 7 a * b # 乘法,结果为 30 a / b # 除法,结果为 3.333333 a ^ b # 幂运算,结果为 1000 a %% b # 取余,结果为 1 a %/% b # 整除,结果为 3

需要注意的是,R 中的除法默认返回浮点数。如果需要整数除法,可以使用%/%运算符。此外,R 支持复合赋值运算符,例如+=并不存在,但可以通过<-结合运算实现类似效果。

# 复合运算 x <- 5 x <- x + 2 # x 变为 7 x <- x * 3 # x 变为 21 print(x)

3. 比较运算

比较运算用于判断两个值之间的大小或相等关系,返回逻辑值TRUE或FALSE。R 中的比较运算符包括>、<、>=、<=、==和!=。

# 比较运算示例 x <- 8 y <- 12 x > y # FALSE x < y # TRUE x >= 8 # TRUE x <= 7 # FALSE x == 8 # TRUE x != 8 # FALSE

比较运算在向量化操作中非常有用,可以对整个向量进行逐元素比较,返回一个逻辑向量。

# 向量比较 scores <- c(85, 92, 78, 88, 95) scores > 90 # 返回 FALSE TRUE FALSE FALSE TRUE scores == 88 # 返回 FALSE FALSE FALSE TRUE FALSE

4. 逻辑运算

逻辑运算用于组合多个条件,主要包括与(&)、或(|)和非(!)。R 还提供了短路版本的&&和||,用于标量逻辑判断。

# 逻辑运算示例 p <- TRUE q <- FALSE p & q # FALSE p | q # TRUE !p # FALSE p && q # FALSE p || q # TRUE

在向量化场景中,&和|会逐元素进行逻辑运算,而&&和||只取第一个元素进行判断。这一点在实际编程中需要特别注意。

# 向量逻辑运算 v1 <- c(TRUE, FALSE, TRUE) v2 <- c(TRUE, TRUE, FALSE) v1 & v2 # TRUE FALSE FALSE v1 | v2 # TRUE TRUE TRUE !v1 # FALSE TRUE FALSE

5. 向量运算

向量是 R 中最基本的数据结构。R 的向量运算具有天然的向量化特性,即对向量中的每个元素执行相同的运算,无需显式循环。

# 创建向量 vec1 <- c(1, 2, 3, 4, 5) vec2 <- c(10, 20, 30, 40, 50) 向量与标量的运算 vec1 + 1 # 2 3 4 5 6 vec1 * 2 # 2 4 6 8 10 vec1 ^ 2 # 1 4 9 16 25 向量与向量的运算(逐元素) vec1 + vec2 # 11 22 33 44 55 vec1 * vec2 # 10 40 90 160 250 vec2 / vec1 # 10 10 10 10 10

当两个向量长度不同时,R 会自动进行循环补齐(recycling),将较短的向量重复使用以匹配较长向量的长度。

# 循环补齐示例 short <- c(1, 2) long <- c(10, 20, 30, 40) short + long # 11 22 31 42(short 被补齐为 1 2 1 2)

向量还支持许多内置的统计函数,例如求和、均值、最大值、最小值等。

# 向量统计函数 data <- c(12, 45, 78, 23, 56, 89) sum(data) # 303 mean(data) # 50.5 median(data) # 50.5 max(data) # 89 min(data) # 12 sd(data) # 标准差 var(data) # 方差

6. 矩阵运算

矩阵是 R 中用于处理二维数据的结构。矩阵运算在统计分析、线性代数和机器学习中应用广泛。创建矩阵可以使用matrix()函数。

# 创建矩阵 m1 <- matrix(1:9, nrow = 3, ncol = 3) print(m1) # [,1] [,2] [,3] # [1,] 1 4 7 # [2,] 2 5 8 # [3,] 3 6 9 按行填充 m2 <- matrix(1:9, nrow = 3, byrow = TRUE) print(m2) [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9

矩阵的算术运算遵循逐元素规则,而矩阵乘法使用%*%运算符。

# 矩阵逐元素运算 A <- matrix(c(1, 2, 3, 4), nrow = 2) B <- matrix(c(5, 6, 7, 8), nrow = 2) A + B # 逐元素相加 A * B # 逐元素相乘(不是矩阵乘法) 矩阵乘法 A %*% B # 真正的矩阵乘法 矩阵转置 t(A) 矩阵求逆 solve(A)

矩阵还支持行列式、特征值等高级运算,这些在统计建模中非常常用。

# 矩阵高级运算 M <- matrix(c(4, 2, 1, 3), nrow = 2) det(M) # 行列式 eigen(M) # 特征值和特征向量 diag(M) # 提取对角线元素 rowSums(M) # 每行求和 colMeans(M) # 每列均值

7. 常用数学函数

R 内置了大量数学函数,涵盖三角函数、指数对数、取整等常见需求。

# 常用数学函数 sqrt(16) # 平方根,结果为 4 exp(1) # e 的 1 次方,约 2.718282 log(100) # 自然对数,约 4.60517 log10(100) # 以 10 为底的对数,结果为 2 log(8, base = 2) # 以 2 为底的对数,结果为 3 三角函数 sin(pi / 2) # 1 cos(0) # 1 tan(pi / 4) # 1 取整函数 floor(3.7) # 3 ceiling(3.2) # 4 round(3.567, 2) # 3.57 trunc(3.9) # 3 绝对值与符号 abs(-5) # 5 sign(-3) # -1

8. 综合实战示例

下面通过一个综合示例,将上述运算知识应用到实际的数据处理场景中。假设我们有一组学生的考试成绩,需要计算总分、平均分、及格率,并筛选出优秀学生。

# 综合实战:学生成绩分析 students <- c("张三", "李四", "王五", "赵六", "孙七") scores <- c(78, 92, 65, 88, 73) 总分与平均分 total <- sum(scores) average <- mean(scores) cat("总分:", total, "\n") cat("平均分:", average, "\n") 及格率(假设 60 分为及格线) pass_rate <- sum(scores >= 60) / length(scores) * 100 cat("及格率:", pass_rate, "%\n") 筛选优秀学生(90 分以上) excellent <- students[scores >= 90] cat("优秀学生:", excellent, "\n") 成绩标准化(减去均值除以标准差) z_scores <- (scores - mean(scores)) / sd(scores) print(z_scores)

运行上述代码,可以看到 R 的向量化运算让数据处理变得简洁高效。通过组合使用算术、比较和逻辑运算,我们可以轻松完成复杂的数据分析任务。

9. 总结

本文系统介绍了 R 语言的基础运算,包括算术运算、比较运算、逻辑运算、向量运算、矩阵运算以及常用数学函数。通过丰富的代码实例,相信读者已经掌握了 R 运算的核心要点。R 的向量化特性是其高效处理数据的基石,建议读者在实际项目中多加练习,逐步熟悉各种运算符的组合使用。后续可以进一步学习 R 的数据框(data.frame)操作、条件语句和循环结构,为更复杂的数据分析打下坚实基础。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询