R 基础运算:从算术到向量与矩阵的全面指南
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 FALSE4. 逻辑运算逻辑运算用于组合多个条件主要包括与、或|和非!。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 FALSE5. 向量运算向量是 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 42short 被补齐为 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) # -18. 综合实战示例下面通过一个综合示例将上述运算知识应用到实际的数据处理场景中。假设我们有一组学生的考试成绩需要计算总分、平均分、及格率并筛选出优秀学生。# 综合实战学生成绩分析 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操作、条件语句和循环结构为更复杂的数据分析打下坚实基础。