既然R语言是一种语言,那么就应该包含所有串行语言都有的基本控制语句:分支和循环。下面介绍相应的语句。
1.1 分支语句
1.1.1 if-else分支语句
二分支语句if-else是最常见的控制语句,其基本形式如下:
if(<判断1>)
{ 处理1
} else
{
处理2
}
或者:
if(<判断1>)
{ 处理1
} else if(<判断2>)
{
处理2
} else {
处理3
}
1.1.2 switch分支语句
switch语句可以直接实现多分支语句,但分支时并无判断的优先级区分,其基本形式如下:
switch(case,case 1 处理,case 2 处理,...,case n 处理)
2.1 循环语句
在R语言中,可以使用for、while以及repeat-break实现循环语句。循环语句可以简单依据计数操作(当计数器达到了设定的循环次数时自动停止)或者某一向量来进行轮询。
2.1.1 for循环语句
一组用户在网上的页面浏览量(PV)如下表所示:
用户ID | 页面浏览量PV |
1 | 1 |
2 | 1 |
3 | 2 |
4 | 3 |
5 | 1 |
6 | 1 |
7 | 15 |
8 | 7 |
9 | 18 |
10 | 1 |
11 | 1 |
12 | 2 |
13 | 3 |
14 | 1 |
15 | 1 |
方法一:
pv<-c(1,1,2,3,1,1,15,7,18,1,1,2,3,1,1)
result<-""
m<-1
for(i in pv){
if(i<=5){
result[m]<-"初级用户";
} else if (i<=15){
result[m]<-"中级用户";
} else {
result[m]<-"高级用户"
}
m<-m+1
}
result #查看结果
[1] "初级用户" "初级用户" "初级用户" "初级用户" "初级用户" "初级用户" "中级用户" "中级用户" "高级用户" "初级用户"
[11] "初级用户" "初级用户" "初级用户" "初级用户" "初级用户
result<-""
for(i in 1:length(pv)){
if(pv[i]<=5){
result[i]<-"初级用户";
} else if (pv[i]<=15) {
result[i]<-"中级用户";
} else {
result[i]<-"高级用户";
}
}
i<-1
result<-""
while(i<length(pv)){
if(pv[i]<=5){
result[i]<-"初级用户"
} else if (pv[i]<=15) {
result[i]<-"中级用户"
} else {
result[i]<-"高级用户"
}
i<-i+1
}
由此看出,for实际上是通过遍历一个向量的方法来控制循环次数,while则是直接设置循环的范围。
for的应用基本可以覆盖while,所有笔者更倾向于使用for循环语句。
2.3 repeat-break循环语句
repeat是无限循环语句,并且会在达到循环条件后使用break语句直接跳出循环。例如:
pv<-c(1,1,2,3,1,1,15,7,18,1,1,2,3,1,1)
i<-1
result<-""
repeat{
if(i>length(pv)) #设置循环结束时的跳出语句
break
if(pv[i]<=5){
result[i]<-"初级用户"
} else if(pv[i]<=16) {
result[i]<-"中级用户"
} else {
result[i]<-"高级用户"
}
i<-i+1
}
实例中的break也叫跳出循环语句,执行后将直接跳出循环语句。R语言还提供了一个next语句,执行后只会跳出本次循环,而不会跳出整个循环语句。