入门必学 | R语言for循环入门指导

文章目录

在R语言中,「迭代」是一种减少重复代码的重要工具。它的作用在于可以对多个输入执行同一种处理,比如对多个列或多个数据集进行同样的操作。本节我们将介绍一种重要的迭代方式:for循环。for循环的运行过程十分简洁明了,是掌握迭代的很好的学习起点。

何为for循环

在R语言中,当你希望相同的代码块使用不同的输入值执行多次时。你可以利用for循环对一个序列或数组进行迭代,然后在for循环中进行(子)数据的创建、修改与分析等多种操作,执行你想重复多次的运算。

一个基本的for循环的结构如下:

r 复制代码
output<- #输出
for (i in sequence) {#序列
  # 每次迭代时要执行的代码 #循环体
}

每个for循环都包括3个部分.

-「输出output」:在开始循环前,你必须为输出结果分配足够的空间,并提供一个"盒子"把你的循环结果装起来。根据结果的类型,可以为向量,数据框或者列表等。

-「序列i in sequence」:这部分确定了使用哪些值来进行循环,每一轮for循环都会赋予i一个来自sequence的不同的值。因此,你可以把i看成一个代词,在每次重复中,i都会发生变化。

-「循环体」:这部分就是执行具体操作的代码。它们会重复运行,每次运行都使用一个不同的i值。

我们什么时候该使用for循环

假设我们有以下这样一个简单的数据集

r 复制代码
set.seed(123)
df<- data.frame(
a = rnorm(10),
b = rnorm(10), 
c = rnorm(10), 
d = rnorm(10))

> df
             a          b          c           d
1  -0.56047565  1.2240818 -1.0678237  0.42646422
2  -0.23017749  0.3598138 -0.2179749 -0.29507148
3   1.55870831  0.4007715 -1.0260044  0.89512566
4   0.07050839  0.1106827 -0.7288912  0.87813349
5   0.12928774 -0.5558411 -0.6250393  0.82158108
6   1.71506499  1.7869131 -1.6866933  0.68864025
7   0.46091621  0.4978505  0.8377870  0.55391765
8  -1.26506123 -1.9666172  0.1533731 -0.06191171
9  -0.68685285  0.7013559 -1.1381369 -0.30596266
10 -0.44566197 -0.4727914  1.2538149 -0.38047100

我们想要计算出每列的平均数。完全可以使用复制粘贴来完成这个任务:

r 复制代码
> mean(df$a)
[1] 0.07462564
> mean(df$b)
[1] 0.208622
> mean(df$c)
[1] -0.4245589
> mean(df$d)
[1] 0.3220446

但这样做就违反了我们的经验法则:永远不要复制粘贴超过2次。相反,我们应该使用for循环:

r 复制代码
output<- c() #输出
for (i in 1:ncol(df)) { #序列
  output[i] <- mean(df[,i]) #循环体
} 

> output
[1]  0.07462564  0.20862196 -0.42455887  0.32204455

这样就自动得到了我们想要的结果。细节可以参考文中代码,有疑惑可以留言讨论~

相关推荐
lsx20240613 小时前
jQuery UI 实例
开发语言
Agent手记13 小时前
终端消费数据自动采集与分析智能体的搭建思路:2026全链路技术架构与实战解析
java·开发语言·人工智能·ai·架构
-凌凌漆-13 小时前
【Qt】qt延时
开发语言·qt
AI-小柒13 小时前
磅上线!DataEyes 聚合平台正式接入 GPT-Image-2,开启多模态 AI 生成全新纪元
大数据·开发语言·数据库·人工智能·gpt·php
小此方13 小时前
Re:从零开始的 C++ 进阶篇(四)工业级 C++ 编程:如何构建异常安全的健壮系统?(含案例分析)
运维·开发语言·c++·安全
❆VE❆13 小时前
python基础篇(一):使用vscode搭建python相关环境
开发语言·vscode·python
t***54414 小时前
如何确认 Clang 是否在 Dev-C++ 中成功应用
java·开发语言·c++
神探小白牙14 小时前
3D饼图,带背景图和自定义图例(threejs)
开发语言·前端·javascript·3d·vue
楚Y6同学14 小时前
QT之下拉框自动填充功能
开发语言·c++·qt·qt开发技巧·串口下拉填充·网口下拉填充
Full Stack Developme14 小时前
Hutool DFA 教程
开发语言·c#