入门必学 | 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

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

相关推荐
李日灐1 小时前
手搓简单 string 库:了解C++ 字符串底层
开发语言·c++
say_fall1 小时前
C语言编程实战:每日一题 - day7
c语言·开发语言
LiLiYuan.2 小时前
【Lombok库常用注解】
java·开发语言·python
Charles_go2 小时前
C#中级45、什么是组合优于继承
开发语言·c#
二川bro2 小时前
数据可视化进阶:Python动态图表制作实战
开发语言·python·信息可视化
q***2513 小时前
java进阶1——JVM
java·开发语言·jvm
while(1){yan}3 小时前
线程的状态
java·开发语言·jvm
豐儀麟阁贵3 小时前
8.3 Java常见的异常类
java·开发语言
lzh200409193 小时前
【C++STL】List详解
开发语言·c++
q***44813 小时前
Java进阶10 IO流
java·开发语言