本站分享:AI、大数据、数据分析师培训认证考试,包括:Python培训Excel培训Matlab培训SPSS培训SAS培训R语言培训Hadoop培训Amos培训Stata培训Eviews培训

R语言中的控制语句_r语言培训

r语言 cdadata 4958℃

R语言中的控制语句

关键词:r语言中if语句r语言中的if语句r语言中的循环语句r语言switch case语句

前言

控制结构程序运行的顺序,一般包括:

    if, else:测试模中情况
    for: 循环运行
    while: 如果为真就运行
    repeat: 循环运行
    break: 停止运行
    next: 跳出
    return: 回到某个功能更

目录

1. if判断

2. for循环

3. While循环

4. Repeat循环

5. next循环

1. if判断

    ---------------------------------------------------------

    # if爱你,else就要和你在一起,又要给你一些距离

    if (con){
        expr
    } else{
        expr2
    }

    # if...else..结构中,}与else必须在同一行。
    # 简易形式(不推荐):
    # else不能与expr在同一行

    if (con) expr
    else expr2

    # 建议将所有if ... else ...结构写成第一种形式,如果没有else,用else {}代替。

    ---------------------------------------------------------

    # code1
    if(<>) {
    ## do something
    } else {
    ## do something else
    }
    
    # code2
    if() {
    ## do something
    } else if() {
    ## do something different
    } else {
    ## do something different
    }
    
    # code3
    # 如果这样会报错
    if(x > 3) {
        y <- 10
    } else {
        y <- 0
    }

    # code4
    # 应该是这样
    y <- if(x > 3) {
        10
    } else {
        0
    }
    
    ---------------------------------------------------------

2. for循环

    R语言中for循环的程序样板
    ---------------------------------------------------------

    for(var in seq) expr
    
    参数
    
    var     seq中的元素
    seq     list、vector、data.frame
    expr    执行的逻辑

    这个是for循环的程序样板,for循环会遍历seq中的每个元素,每次遍历把一个元素放在var中,seq可以是list、vector、DataFrame等数据结构;
    每次遍历的时候,我们可以在expr的表达式位置,加上自己的处理逻辑。

    ---------------------------------------------------------

    ##### 案例1:

    for(i in 1:5) print(i)

    ss <- seq(from=1, to=10, by=0.1)

    for(s in ss) {
      print(s)
    }

    df = data.frame(
      age=c(21, 22, 23),
      name=c('KEN', 'John', 'JIMI'),
      stringsAsFactors = FALSE
    );

    #如果用in进行遍历data.frame,那么默认按列遍历
    for(l in df) {
      print(l);
      print(l['age'])
      print(l['name'])
      print("---------------------")
    }

    for(i in 1:nrow(df)) {
      l <- df[i, ]
      print(l);
      print(l['age'])
      print(l['name'])
      print("---------------------")
    }

    ---------------------------------------------------------
    
    ##### 案例2:
    
     for(i in 1:10) {
     print(i)
     }
     
    # 下面的三种写法意思一样
    x <- c("a", "b", "c", "d")
     
    for(i in 1:4) {
       print(x[i])
     }
    
     for(i in seq_along(x)) {
       print(x[i])
     }
    
     for(letter in x) {
       print(letter)
     }
    
     for(i in 1:4) print(x[i])
    
     # 二维for
     x <- matrix(1:6, 2, 3)
     for(i in seq_len(nrow(x))) {
         for(j in seq_len(ncol(x))) {
           print(x[i, j])
         }
     }

    ---------------------------------------------------------

3. While循环

    R语言中while语言遍历的样板
    ---------------------------------------------------------       
    
        while(cond) expr    
    
    参数
    
    cond    逻辑条件语句
    expr    执行的逻辑

    While循环是一个只要条件cond为真,那么就会一直执行下去的循环,所以while true这个语句也叫作死循环语句,它接受一个cond的参数输入,接着后面就是它要执行的程序逻辑。

    ---------------------------------------------------------

    ##### 案例1:
    
    i = 0
    while(i<5) {
      i <- i+1;
      print(1:i);
    }

    i = 0
    while(i<5) {
      i <- i+1
      if(i==4) {
        next;
      }
      print(1:i);
    }

    i = 0
    while(TRUE) {
      i <- i+1
      if(i==4) {
        next;
      }
      print(1:i);
      if(i==10) {
        break;
      }
    }

    ---------------------------------------------------------
    
    ##### 案例2:

    count <- 0
    while(count < 10) {
        print(count)
        count <- count + 1
    }
    
    
    z <- 5
    while(z >= 3 && z <= 10) {
            print(z)
            coin <- rbinom(1, 1, 0.5)
            if(coin == 1) {  ## random walk
                  z <- z + 1
            } else {
                  z <- z - 1
            }
    }

    ---------------------------------------------------------

4. Repeat循环

    ---------------------------------------------------------

    R语言中repeat语言遍历的样板,注意这是个死循环,使用break跳出死循环
    
    repeat expr
        
    参数
    expr    执行的逻辑

    While当它的condition写死为true的时候,才算是死循环,而Repeat直接就是个死循环了,它没有condition这个参数,所以我们要注意在执行的逻辑中,使用break关键字跳出死循环。

    ---------------------------------------------------------

    ##### 案例1:
    
    i = 0

    repeat {
      i <- i+1
      if(i==4) {
        next;
      }
      print(1:i);
      if(i==10) {
        break;
      }
    }

    ---------------------------------------------------------

    ##### 案例2:

    # 停止repeat的方式就是break
    x0 <- 1
    tol <- 1e-8
    repeat {
        x1 <- computeEstimate()
        if(abs(x1 - x0) < tol) {
            break
        } else {
            x0 <- x1
        }
    }

    ---------------------------------------------------------

5. next循环

    for(i in 1:100) {
        if(i <= 20) {
            ## Skip the first 20 iterations
            next
        }
        ## Do something here
    }
    ## return signals that a function should exit and return a given value

转载请注明:数据分析 » R语言中的控制语句_r语言培训

喜欢 (0)or分享 (0)