R语言数据操作基础

既然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
11
21
32
43
51
61
715
87
918
101
111
122
133
141
151
如果要对用户进行分类,如规定每日页面浏览量PV为1~5的是初级用户,6~15的为中级用户,PV在16页以上的为高级用户,该如何操作?采用两种方式对PV数据进行处理为以用户进行分类的数据。

方法一:

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] "初级用户" "初级用户" "初级用户" "初级用户" "初级用户

备注:不知道循环次数时,可以直接遍历相关向量(i in pv 语句)
方法二:
pv<-c(1,1,2,3,1,1,15,7,18,1,1,2,3,1,1)
result<-""
for(i in 1:length(pv)){
  if(pv[i]<=5){
    result[i]<-"初级用户";
  } else if (pv[i]<=15) {
    result[i]<-"中级用户";
  } else {
    result[i]<-"高级用户";
  }
}

备注:知道循环次数时,可以设置遍历次数(i in 1:length(pv)语句)

2.2 while循环语句
在介绍while循环语句时,同样使用上面的数据为例进行说明,代码如下:
pv<-c(1,1,2,3,1,1,15,7,18,1,1,2,3,1,1)
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语句,执行后只会跳出本次循环,而不会跳出整个循环语句。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiabiao1602

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值