本篇文章由 VeriMake 旧版论坛中备份出的原帖的 Markdown 源码生成
原帖标题为:R 语言 | 判断与循环
原帖网址为:https://verimake.com/topics/222 (旧版论坛网址,已失效)
原帖作者为:dawdler(旧版论坛 id = 64,注册于 2020-08-17 14:01:22)
原帖由作者初次发表于 2021-05-26 18:13:33,最后编辑于 2021-05-26 18:13:33(编辑时间可能不准确)
截至 2021-12-18 14:27:30 备份数据库时,原帖已获得 412 次浏览、0 个点赞、0 条回复
R语言
判断与循环
1. 判断语句
在大多数编程语言中,使用判断语句是设置有条件执行的一种常用方式,在判断结构中,程序员可以指定一个或多个要测试或者评估的条件,并要求程序在条件为真或为假时分别需要执行哪些语句。
R语言中提供了以下几种判断语句:
if
语句
if - else
语句
switch
语句
1.1 if - else
##if statement
#E.g.:
x <- 10L #令x是一个数值为10的整型数
#use boolean expressions as conditions
#判断条件:如果x是整型
if(is.integer(x)){
#条件为真:则输出......
print("x is an integer")
#如果if的判断条件不为真,则开始新的判断
#可以有多个else if判断语句
} else if(is.numeric(x)){
#条件为真,输出......
print("x is not an integer, but a number")
} else{
#如果以上条件都不为真,则输出......
print("x is not a number")
}
以上代码输出结果为:

1.2 switch
switch
语句多用于测试一个变量等于多个值的情况:
#E.g.1:
x <- switch(
3,
"verimake",
"github",
"studywithtp",
"sparkroad"
)
print(x)
#返回第三个值
#return NULL if out of bound
#E.g.2:
x <- "studywithtp"
switch(x, verimake="www.verimake.com", github="www.github.com", studywithtp="www.studywithtp.com",sparkroad=NULL)
#返回字符串对应的值
print(x)
以上代码的输出结果为:

1.3 总结
当我们需要测试一个变量在一个或多个条件中只满足一个时,可以使用一组if - else if - else
语句;当我们需要测试一个变量可以同时满足多个条件时,可以使用一组switch
语句,也可以使用多个if
语句(不是else if
)。
以上不考虑用逻辑运算符连接多个条件的情况~
2. 循环
在程序的执行过程中,我们通常需要重复执行同一块代码,这种时候就需要用到循环语句。
R语言中提供了以下几种循环结构:
repeat
循环
while
循环
for
循环
一般来说,循环,即重复运行大括号里的代码块。但是,有时候我们会需要在循环过程中跳出或跳过某次循环,这个时候,我们就需要通过break
和next
来控制循环的进行和停止,从而实现代码的跳转。
2.1 repeat
##repeat
v <- c("veri", "make")
count <- 2 #count一般作为计数变量
repeat{
print(v)
count <- count + 1
#设置循环终止条件
if (count > 7){
break #符合条件时跳出循环
}
}
以上代码的输出结果为:

2.2 while
##while
v <- c("veri", "make")
count <- 2 #计数变量
#条件为真即循环
while (count < 7){
print(v)
count = count + 1
}
以上代码的输出结果为:

2.3 for
#for loop
l <- letters[1:5]
for (i in l){
#符合条件时,跳过当次循环,开始下一次循环
if(i == "c"){
next #类似于其它语言中的continue
}
print(i)
}
for (j in l){
print(j)
}
以上代码的输出结果为:

以上,就是R语言中基本的判断与循环语句的语法与简单的示例。
相关资料:
https://www.runoob.com/r/r-decision-making.html
https://www.runoob.com/r/r-loop.html