1 条件语句If-else
如果条件成立,程序就做某件事;否则(另一种条件下),程序做另一件事。
if(<condition>) {
## do something
} else {
## do something else
}
if(<condition1>) {
## do something
} else if(<condition2>) {
## do something different
} else {
## do something different
}
eg:
x <- 8
if(x<6) {
y<- 10
} else {
y <- 0
} #如果x<6,则y为10,如果x不<6,则y为0
等同于
y <- if(x > 3) {
10
} else {
0
}
else语句不是必须的。
R中,条件语句不是向量型运算。如果条件语句是由一个以上的逻辑值组成的向量,那么执行该语句时只会用到向量的第1个元素。
eg:
x <- 10
y <- seq(6,17)
if (x < y) x else y
Warning message: In if (x < y) x else y : the condition has length > 1 and only the first element will be used
如果我们想要执行向量化的运算,这时候可以采用ifelse函数:
> x <- 10
> y <- seq(6,17)
> ifelse(x<y, x, y) #如果x<y,则输出x,否则,输出y
[1] 6 7 8 9 10 10 10 10 10 10 10 10
()定义函数的参数 ()在运算中作为优先级 [] 用做对象的元素索引 {} 作为代码段落的起止
2 switch
switch语句主要用于处理数字或者字符串,并根据输入返回某个分支。
switch(EXPR, ...)
判断,EXPR与后面…所表示的等式左侧进行匹配,若匹配上则运行等式右侧的命令;
假设输入一个整数n,switch返回从第1个参数开始的第n个参数值,如果输入的整数超出了范围,无法匹配相应参数值:
switch(2,"ni","wo")
[1] "wo"
3 循环
3.1repeat循环,只是重复同一个表达式
repeat expression
若要退出循环,则用break
命令。
eg:输出所有不大于25的5的倍数
> i <- 5
> repeat {if (i > 25) break else{print(i); i <- i + 5;}}
[1] 5
[1] 10
[1] 15
[1] 20
[1] 25
3.2 while循环
while,该结构在某个条件为真时,重复某个特定的表达式:
while (condition) expression
eg:输出所有不大于25的5的倍数。
> i <- 5
> while (i <= 25) {print(i); i <- i + 5}
[1] 5
[1] 10
[1] 15
[1] 20
[1] 25
3.3 for循环
该结构遍历向量或列表中的每一个项目
for (var in seq) {expr}
var表示循环变量,seq为向量,expr为执行的语句。
eg:输出所有不大于25的5的倍数
> for (i in seq(from=5,to=25,by=5)){print(i)}
[1] 5
[1] 10
[1] 15
[1] 20
[1] 25