R语言 控制语句
控制语句 是用来根据语句中提供的条件来控制程序的执行和流程的表达式。这些结构是用来在评估变量后做出决定的。在这篇文章中,我们将结合实例讨论所有的控制语句。
在R编程中,有8种类型的控制语句,如下。
- if条件
- if-else条件
- for 循环
- 嵌套循环
- while 循环
- repeat和break语句
- return语句
- next语句
if条件
这个控制结构检查括号中提供的表达式是否为真。如果为真,则继续执行大括号{}中的语句。
语法
if(expression){
statements
....
....
}
例子
x <- 100
if(x > 10){
print(paste(x, "is greater than 10"))
}
输出
[1] "100 is greater than 10"
if-else条件
它与 if 条件类似,但当if条件中的测试表达式失败时,就会执行 else 条件中的语句。
语法
if(expression){
statements
....
....
}
else{
statements
....
....
}
例子
x <- 5
# Check value is less than or greater than 10
if(x > 10){
print(paste(x, "is greater than 10"))
}else{
print(paste(x, "is less than 10"))
}
输出
[1] "5 is less than 10"
for 循环
它是一种循环或重复执行的语句序列,直到达到退出条件。
语法
for(value in vector){
statements
....
....
}
例子
x <- letters[4:10]
for(i in x){
print(i)
}
输出
[1] "d"
[1] "e"
[1] "f"
[1] "g"
[1] "h"
[1] "i"
[1] "j"
嵌套循环
嵌套循环与简单循环类似。嵌套意味着循环内的循环。此外,嵌套循环被用来操作矩阵。
例子
# Defining matrix
m <- matrix(2:15, 2)
for (r in seq(nrow(m))) {
for (c in seq(ncol(m))) {
print(m[r, c])
}
}
输出
[1] 2
[1] 4
[1] 6
[1] 8
[1] 10
[1] 12
[1] 14
[1] 3
[1] 5
[1] 7
[1] 9
[1] 11
[1] 13
[1] 15
while 循环
while 循环是另一种循环,它一直迭代到一个条件得到满足。在执行循环的主体之前,首先检查测试表达式。
语法
while(expression){
statement
....
....
}
例子
x = 1
# Print 1 to 5
while(x <= 5){
print(x)
x = x + 1
}
输出
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
repeat循环和break语句
repeat 是一个可以重复多次的循环,但没有退出条件来退出这个循环。因此,break语句被用来从循环中退出。 break 语句可以用于任何类型的循环,以退出该循环。
语法
repeat {
statements
....
....
if(expression) {
break
}
}
例子
x = 1
# Print 1 to 5
repeat{
print(x)
x = x + 1
if(x > 5){
break
}
}
输出
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
return语句
return 语句用于返回一个已执行的函数的结果,并将控制权返回给调用函数。
语法
return(expression)
例子
# Checks value is either positive, negative or zero
func <- function(x){
if(x > 0){
return("Positive")
}else if(x < 0){
return("Negative")
}else{
return("Zero")
}
}
func(1)
func(0)
func(-1)
输出
[1] "Positive"
[1] "Zero"
[1] "Negative"
next语句
next 语句用于跳过当前迭代而不执行进一步的语句,继续下一个迭代周期而不终止循环。
例子
# Defining vector
x <- 1:10
# Print even numbers
for(i in x){
if(i%%2 != 0){
next #Jumps to next loop
}
print(i)
}
输出
[1] 2
[1] 4
[1] 6
[1] 8
[1] 10